題目1130:日誌排序
時間限制:1 秒
記憶體限制:32 兆
特殊判題:否
提交:529
解決:90
題目描述:有乙個網路日誌,記錄了網路中計算任務的執**況,每個計算任務對應一條如下形式的日誌記錄:
「hs_10000_p」是計算任務的名稱,
「2007-01-17 19:22:53,315」是計算任務開始執行的時間「年-月-日 時:分:秒,毫秒」,
「253.035(s)」是計算任務消耗的時間(以秒計)
hs_10000_p 2007-01-17 19:22:53,315 253.035(s)
請你寫乙個程式,對日誌中記錄計算任務進行排序。
時間消耗少的計算任務排在前面,時間消耗多的計算任務排在後面。
如果兩個計算任務消耗的時間相同,則將開始執行時間早的計算任務排在前面。
輸入:日誌中每個記錄是乙個字串,每個字串佔一行。最後一行為空行,表示日誌結束。日誌中最多可能有10000條記錄。
計算任務名稱的長度不超過10,開始執行時間的格式是yyyy-mm-dd hh:mm:ss,mmm,消耗時間小數點後有三位數字。
計算任務名稱與任務開始時間、消耗時間之間以乙個或多個空格隔開,行首和行尾可能有多餘的空格。
輸出:排序好的日誌記錄。每個記錄的字串各佔一行。
輸入的格式與輸入保持一致,輸入包括幾個空格,你的輸出中也應該包含同樣多的空格。
樣例輸入:
hs_10000_p 2007-01-17 19:22:53,315 253.035(s)hs_10001_p 2007-01-17 19:22:53,315 253.846(s)
hs_10002_m 2007-01-17 19:22:53,315 129.574(s)
hs_10002_p 2007-01-17 19:22:53,315 262.531(s)
hs_10003_m 2007-01-17 19:22:53,318 126.622(s)
hs_10003_p 2007-01-17 19:22:53,318 136.962(s)
hs_10005_m 2007-01-17 19:22:53,318 130.487(s)
hs_10005_p 2007-01-17 19:22:53,318 253.035(s)
hs_10006_m 2007-01-17 19:22:53,318 248.548(s)
hs_10006_p 2007-01-17 19:25:23,367 3146.827(s)
樣例輸出:
hs_10003_m 2007-01-17 19:22:53,318 126.622(s)hs_10002_m 2007-01-17 19:22:53,315 129.574(s)
hs_10005_m 2007-01-17 19:22:53,318 130.487(s)
hs_10003_p 2007-01-17 19:22:53,318 136.962(s)
hs_10006_m 2007-01-17 19:22:53,318 248.548(s)
hs_10000_p 2007-01-17 19:22:53,315 253.035(s)
hs_10005_p 2007-01-17 19:22:53,318 253.035(s)
hs_10001_p 2007-01-17 19:22:53,315 253.846(s)
hs_10002_p 2007-01-17 19:22:53,315 262.531(s)
hs_10006_p 2007-01-17 19:25:23,367 3146.827(s)
/*********************************
* 日期:2013-2-13
* 題號: 九度oj 題目1130:日誌排序
* 結果:ac
* 總結:關鍵點是sscanf()的應用
**********************************/
#include#include#include//字串結構體
typedef struct log
log;
//排序函式
//時間消耗少的計算任務排在前面,時間消耗多的計算任務排在後面。
//如果兩個計算任務消耗的時間相同,則將開始執行時間早的計算任務排在前面。
int cmp(const void *a, const void *b)
else if(c->year != d->year)
else if(c->month != d->month)
else if(c->day != d->day)
else if(c->hour != d->hour)
else if(c->minute != d->minute)
else if(c->second != d->second)
else if(c->msecond != d->msecond)
}log log[10001];
int main()
//格式化
sscanf(log[index].str,"%*s%d-%d-%d%d:%d:%d,%d%lf%*s",&log[index].year,&log[index].month,&log[index].day
,&log[index].hour,&log[index].minute,&log[index].second,&log[index].msecond,&log[index].time);
index++;
} //排序
qsort(log,index,sizeof(log[0]),cmp);
//輸出
for(i = 0;i < index;i++)
return 0;
}
九度OJ 題目1130 日誌排序
題目1130 日誌排序 時間限制 1 秒 記憶體限制 32 兆 特殊判題 否 提交 529 解決 90 題目描述 有乙個網路日誌,記錄了網路中計算任務的執 況,每個計算任務對應一條如下形式的日誌記錄 hs 10000 p 是計算任務的名稱,2007 01 17 19 22 53,315 是計算任務開...
OJ 1130 日誌排序
include include include include include using namespace std typedef structrecord vectorve bool cmp const record a,const record b sort ve.begin ve.end ...
九度oj 題目1185 特殊排序
題目描述 輸入一系列整數,將其中最大的數挑出,並將剩下的數進行排序。輸入 輸入第一行包括1個整數n,1 n 1000,代表輸入資料的個數。接下來的一行有n個整數。輸出 可能有多組測試資料,對於每組資料,第一行輸出乙個整數,代表n個整數中的最大值,並將此值從陣列中去除,將剩下的數進行排序。第二行將排序...