開門人和關門人

2021-10-06 07:48:17 字數 1834 閱讀 8446

題目描述

每天第乙個到機房的人要把門開啟,最後乙個離開的人要把門關好。現有一堆雜亂的機房簽到、簽離記錄,請根據記錄找出當天開門和關門的人。

輸入描述:

每天的記錄在第一行給出記錄的條目數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行,每行的格式為 證件號碼 簽到時間 簽離時間...