九度OJ 題目1130 日誌排序

2021-06-12 15:21:11 字數 3145 閱讀 8618

題目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)

2023年北京大學方正實驗室計算機研究生機試真題

/*********************************

* 日期: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個整數中的最大值,並將此值從陣列中去除,將剩下的數進行排序。第二行將排序...