HDUOJ----4509湫湫系列故事——減肥記II
湫湫系列故事——減肥記II
Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 2176 Accepted Submission(s): 921
Problem Description
雖然制定了減肥食譜,但是湫湫顯然剋制不住吃貨的本能,根本沒有按照食譜行動! 於是,結果顯而易見… 但是沒有什麼能難倒高智商美女湫湫的,她決定另尋對策——吃沒關係,咱吃進去再運動運動消耗掉不就好了? 湫湫在內心咆哮:“我真是天才啊~(≧▽≦)/~” 可是,大家要知道,過年回家多忙啊——幫忙家裡做大掃除,看電影,看小說,高中同學聚餐,初中同學聚餐,小學同學聚餐,吃東西,睡覺,吃東西,睡覺,吃東西,睡覺……所以鍛鍊得抽著時間來。 但是,湫湫實在太忙了,所以沒時間去算一天有多少時間可以用於鍛鍊,現在她把每日行程告訴你,拜託你幫忙算算吧~ 皮埃斯:一天是24小時,每小時60分鐘
Input
輸入資料包括多組測試用例。 每組測試資料首先是一個整數n,表示當天有n件事要做。 接下來n行,第i行是第i件事的開始時間和結束時間,時間格式為HH:MM。 [Technical Specification] 1. 1 <= n <= 500000 2. 00 <= HH <= 23 3. 00 <= MM <= 59
Output
請輸出一個整數,即湫湫當天可以用於鍛鍊的時間(單位分鐘)
Sample Input
1
15:36 18:40
4
01:35 10:36
04:54 22:36
10:18 18:40
11:47 17:53
Sample Output
1256
179
Hint
大量輸入,建議用scanf讀資料。
簡單題: 程式碼:
#include<stdio.h> #include<string.h> #include<stdlib.h> #define maxn 500002 struct data { int st; int en; }; data time[maxn]; int cmp(const void *a ,const void *b) { if((*(data *)a).st==(*(data *)b).st) return (*(data *)a).en - (*(data *)b).en; return (*(data *)a).st - (*(data *)b).st; } int main() { int n,i,hh_1,mm_1,hh_2,mm_2; while(scanf("%d",&n)!=EOF) { for(i=0 ; i<n ;i++) { scanf("%d:%d %d:%d",&hh_1,&mm_1,&hh_2,&mm_2); time[i].st=hh_1*60+mm_1; time[i].en=hh_2*60+mm_2; } qsort(time,n,sizeof(time[0]),cmp); int res=time[0].st,maxc; maxc=time[0].en; for(i=1;i<n;i++) { if(time[i].st>maxc) res+=time[i].st-maxc; if(maxc<time[i].en) maxc = time[i].en ; } printf("%dn",res+1440-maxc); } return 0; }