1013_開門人和關門人
2019-11-14 11:33:04
供稿:網友
// 1013_開門人和關門人.cpp : 定義控制臺應用程序的入口點。//題目1013:開門人和關門人//時間限制:1 秒內存限制:32 兆特殊判題:否提交:5707解決:2882//題目描述://每天第一個到機房的人要把門打開,最后一個離開的人要把門關好。現有一堆雜亂的機房簽到、簽離記錄,請根據記錄找出當天開門和關門的人。//輸入://測試輸入的第一行給出記錄的總天數N ( N> 0 ),下面列出了N天的記錄。 //每天的記錄在第一行給出記錄的條目數M (M > 0 ),下面是M行,每行的格式為 ////證件號碼 簽到時間 簽離時間 ////其中時間按“小時:分鐘:秒鐘”(各占2位)給出,證件號碼是長度不超過15的字符串。// 輸出:// 對每一天的記錄輸出1行,即當天開門和關門人的證件號碼,中間用1空格分隔。 // 注意:在裁判的標準測試輸入中,所有記錄保證完整,每個人的簽到時間在簽離時間之前,且沒有多人同時簽到或者簽離的情況。// 樣例輸入:// 3// 1// ME3021112225321 00:00:00 23:59:59// 2// EE301218 08:05:35 20:56:35// MA301134 12:35:45 21:40:42// 3// CS301111 15:30:28 17:00:10// SC3021234 08:00:00 11:25:25// CS301133 21:45:00 21:58:40// 樣例輸出:// ME3021112225321 ME3021112225321// EE301218 MA301134// SC3021234 CS301133// 來源:// 2005年浙江大學計算機及軟件工程研究生機試真題#include "stdafx.h"#include "iostream"#include "string"#include "stdio.h"#include "algorithm"using namespace std;struct person{ string id , arrive , leave;}stuff[100]; bool arrive(person a,person b){ return a.arrive < b.arrive;}bool leave(person a,person b){ return b.leave < a.leave;}int main(){ int N,M; while(cin>>N){ while(N--){ cin>>M; for(int i = 0;i<M;i++){ cin>>stuff[i].id>>stuff[i].arrive>>stuff[i].leave; } sort(stuff,stuff+M,arrive); //不是 M-1 cout<<stuff[0].id<<" "; sort(stuff,stuff+M,leave); cout<<stuff[0].id<<endl; } } return 0;}/*1.定義結構體數組時不要和前面的結構體名一樣*/