題目描述
每天第乙個到機房的人要把門開啟,最後乙個離開的人要把門關好。現有一堆雜亂的機房簽到、簽離記錄,請根據記錄找出當天開門和關門的人。
輸入描述:
每天的記錄在第一行給出記錄的條目數m (m > 0 ),下面是m行,每行的格式為
證件號碼 簽到時間 簽離時間
其中時間按「小時:分鐘:秒鐘」(各佔2位)給出,證件號碼是長度不超過15的字串。
輸出描述:
對每一天的記錄輸出1行,即當天開門和關門人的證件號碼,中間用1空格分隔。
注意:在裁判的標準測試輸入中,所有記錄保證完整,每個人的簽到時間在簽離時間之前,且沒有多人同時簽到或者簽離的情況。
示例1輸入
3cs301111 15:30:28 17:00:10
sc3021234 08:00:00 11:25:25
cs301133 21:45:00 21:58:40
輸出sc3021234 cs301133
題目解析:兩次排序就可以得到答案,因為時間格式是規範的,所以直接用字串就可以排序,不用逐步解析出時分秒
**:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace std;
const
int n =
10000
;//用char陣列
typedef
struct
record;
bool
cmp1
(record r1,record r2)
else
}bool
cmp2
(record r1,record r2)
else
}//很簡單,比較開始和結束時間就可以了
intmain()
sort
(record , record + n , cmp1)
; string startid = record[n-1]
.id;
sort
(record , record + n , cmp2)
; string endid = record[0]
.id;
cout << startid <<
" "<< endid << endl;
}return0;
}/* 用string字串,可以直接比較,因為給的比較規範,所以不用擔心出現 8>12 的情況
#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;
const int n = 1000;
typedef structpeople;
people pp[n];
bool cmp1(people p1, people p2)
bool cmp2(people p1, people p2)
int main()
sort(pp , pp+n , cmp1);
cout << pp[0].id << " ";
sort(pp , pp+n , cmp2);
cout << pp[0].id << endl;
} return 0;
} */
開門人和關門人
c 開門人和關門人 結構體 sort time limit 1000msmemory limit 32768kb64bit io format i64d i64u submit status description 每天第乙個到機房的人要把門開啟,最後乙個離開的人要把門關好。現有一堆雜亂的機房籤 到...
開門人和關門人
c 開門人和關門人 結構體 sort time limit 1000msmemory limit 32768kb64bit io format i64d i64u submit status description 每天第乙個到機房的人要把門開啟,最後乙個離開的人要把門關好。現有一堆雜亂的機房籤 到...
開門人和關門人
每天第乙個到機房的人要把門開啟,最後乙個離開的人要把門關好。現有一堆雜亂的機房籤 到 簽離記錄,請根據記錄找出當天開門和關門的人。input 測試輸入的第一行給出記錄的總天數n 0 下面列出了n天的記錄。每天的記錄在第一行給出記錄的條目數m 0 下面是m行,每行的格式為 證件號碼 簽到時間 簽離時間...