程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> HDU 1234 (浙大計算機研究生復試上機考試-2005年) 開門人和關門人 (水)

HDU 1234 (浙大計算機研究生復試上機考試-2005年) 開門人和關門人 (水)

編輯:C++入門知識

HDU 1234 (浙大計算機研究生復試上機考試-2005年) 開門人和關門人 (水)


開門人和關門人

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 11133 Accepted Submission(s): 5667


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

Input 測試輸入的第一行給出記錄的總天數N ( > 0 )。下面列出了N天的記錄。
每天的記錄在第一行給出記錄的條目數M ( > 0 ),下面是M行,每行的格式為

證件號碼 簽到時間 簽離時間

其中時間按“小時:分鐘:秒鐘”(各占2位)給出,證件號碼是長度不超過15的字符串。

Output 對每一天的記錄輸出1行,即當天開門和關門人的證件號碼,中間用1空格分隔。
注意:在裁判的標准測試輸入中,所有記錄保證完整,每個人的簽到時間在簽離時間之前,
且沒有多人同時簽到或者簽離的情況。

Sample Input
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

Sample Output
ME3021112225321 ME3021112225321
EE301218 MA301134
SC3021234 CS301133

Source 浙大計算機研究生復試上機考試-2005年






水題,不解釋了,就是簡單的字符串應用。





AC代碼:

#include 
#include 
#include 
#include 
using namespace std;

struct man 
{
	string id, st, et;         //人的編號,簽到時間,簽退時間
};
man m[10005];

bool cmp1(man a, man b){
	int x = (a.st[0]-'0')*10 + (a.st[1]-'0');
	int xx = (a.st[3]-'0')*10 + (a.st[4]-'0');
	int xxx = (a.st[6]-'0')*10 + (a.st[7]-'0');
	int y = (b.st[0]-'0')*10 + (b.st[1]-'0');
	int yy = (b.st[3]-'0')*10 + (b.st[4]-'0');
	int yyy = (b.st[6]-'0')*10 + (b.st[7]-'0');
	if(x==y && xx==yy)  return xxx < yyy;
	else if(x==y)  return xx < yy;
	return x < y;
}

bool cmp2(man a, man b){
	int x = (a.et[0]-'0')*10 + (a.et[1]-'0');
	int xx = (a.et[3]-'0')*10 + (a.et[4]-'0');
	int xxx = (a.et[6]-'0')*10 + (a.et[7]-'0');
	int y = (b.et[0]-'0')*10 + (b.et[1]-'0');
	int yy = (b.et[3]-'0')*10 + (b.et[4]-'0');
	int yyy = (b.et[6]-'0')*10 + (b.et[7]-'0');
	if(x==y && xx==yy)  return xxx > yyy;
	else if(x==y)  return xx > yy;
	return x > y;
}

int main(){
//	freopen("in.txt", "r", stdin);
	int t, n;
	scanf("%d", &t);
	while(t--){
		scanf("%d", &n);
		for(int i=0; i> m[i].id >> m[i].st >> m[i].et;
		sort(m, m+n, cmp1);
		cout << m[0].id<<" ";
		sort(m, m+n, cmp2);
		cout << m[0].id << endl;
	}
	return 0;
}





  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved