HDU 1234 開門人和關門人
阿新 • • 發佈:2018-12-02
剛發現,做的這幾道浙大複試上機題我都是用結構體完成的
用結構體做的,或許有其他更好的方法
開始:小時不同時誰小誰最早,小時相同比較分鐘,分鐘相同比較秒.....
結束:小時不同時誰大誰最晚,小時相同比較分鐘,分鐘相同比較秒.....
#include<stdio.h> struct start { int h; int m; int s; }; struct time { char ch[20]; struct start b; struct start f; }Time[1000]; int main(void) { int n; scanf("%d", &n); while (n--) { int num; struct time min, max; int minPos, maxPos; scanf("%d", &num); scanf("%s %d:%d:%d %d:%d:%d", Time[0].ch, &Time[0].b.h, &Time[0].b.m, &Time[0].b.s, &Time[0].f.h, &Time[0].f.m, &Time[0].f.s); min = max = Time[0]; for (int i = 1; i < num; i++) { scanf("%s %d:%d:%d %d:%d:%d", Time[i].ch, &Time[i].b.h, &Time[i].b.m, &Time[i].b.s, &Time[i].f.h, &Time[i].f.m, &Time[i].f.s); if (Time[i].b.h < min.b.h || (Time[i].b.h == min.b.h && Time[i].b.m < min.b.m) || ( Time[i].b.h == min.b.h && Time[i].b.m == min.b.m && Time[i].b.s < min.b.s)) { min =Time[i]; minPos = i; } if (Time[i].f.h > max.f.h || (Time[i].f.h == max.f.h && Time[i].f.m > max.f.m) || ( Time[i].f.h == max.f.h && Time[i].f.m == max.f.m && Time[i].f.s > max.f.s)) { max =Time[i]; maxPos = i; } } printf("%s %s\n", min.ch, max.ch); } return 0; }