/* |
2013腾讯马拉松初赛第1场 |
1005 湫湫系列故事——减肥记II |
________________________________________ |
Time Limit: 2.0 Seconds Memory Limit: 65536K |
________________________________________ |
虽然制定了减肥食谱,但是湫湫显然克制不住吃货的本能,根本没有按照食谱行动! |
于是,结果显而易见… |
但是没有什么能难倒高智商美女湫湫的,她决定另寻对策——吃没关系,咱吃进去再运动运动消耗掉不就好了? |
湫湫在内心咆哮:“我真是天才啊~\(≧▽≦)/~” |
可是,大家要知道,过年回家多忙啊——帮忙家里做大扫除,看电影,看小说,高中同学聚餐,初中同学聚餐,小学同学聚餐,吃东西,睡觉,吃东西,睡觉,吃东西,睡觉……所以锻炼得抽着时间来。 |
但是,湫湫实在太忙了,所以没时间去算一天有多少时间可以用于锻炼,现在她把每日行程告诉你,拜托你帮忙算算吧~ |
皮埃斯:一天是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> |
int flag[1440] = {0}; |
int main() { |
int N; //需完成事情的数目 |
int i, j; |
int from, to; //记录开始和结束的分钟数 |
int sum; //计算完成事情需要的分钟数 |
int HH, MM, hh, mm; //记录输入数据 |
while ( scanf ( "%d" , &N) == 1) { |
sum = 0; |
for (i = 0; i < N; i++) { |
scanf ( "%d:%d%d:%d" , &HH, &MM, &hh, &mm); |
from = 60 * HH + MM; //开始时间 |
to = 60 * hh + mm; //结束时间 |
for (j = from; j < to; j++) //标记 |
flag[j] = 1; |
} |
//防止出现不同事情时间重叠的,所以使用两个循环 |
for (i = 0; i < 1440; i++) { |
sum += flag[i]; |
flag[i] = 0; |
} |
printf ( "%d\n" , 1440 - sum); //用于锻炼的时间 |
} |
return 0; |
} |
by: 发表于:2017-08-11 10:08:58 顶(0) | 踩(0) 回复
??
回复评论