快手是比較火的一款短視頻app軟件,裏面每天都會更新一些有趣的視頻,因此它的出現成爲了我們打發時間的一種方式,但是有些同學進去看到有趣的視頻就會停不下來,導致沉迷於此。當你進入和退出快手app的時候它的後臺都有一個記錄數據,即進入快手的時間和退出的時間。現在你的班主任想知道你們一天中刷快手的時間最長的同學是誰,於是就向快手平臺要了你們班的後臺記錄數據,但是這些數據都是零散的,請你幫助你的班主任找出你們班的快手狂人。 定義:快手狂人爲一天中刷視頻時間最長的同學。
輸入格式:
在第一行給兩個整數n和m(1≤n≤100,1≤m≤1000),n代表你們班上的人數,m代表數據的條數,接下來m行每行給一組數據,格式爲:學號 進入時間 退出時間,你們班的學號爲從0~n-1編號並且爲兩位數。
輸出格式:
輸出你們班的快手狂人的學號及其刷視頻的時間,題目保證這樣的同學只有一個。
注:輸出的學號爲兩位數,不足兩位補前導0。
輸入樣例:
3 5
001 04:12:40 04:41:33
000 16:42:03 16:49:27
002 05:14:50 05:37:52
000 04:13:30 04:37:49
000 12:00:15 12:08:46
輸出樣例:
快手狂人爲: 000 00:40:14
整體思路大概就是:
1、求出經過的時間,但是求經過的時間需要注意一些東西 如進小時位,計算秒鐘位;
2、然後進行比較(可以統一單位後比較)在這個題目中我就是將所有的時間統一爲了秒鐘再找的最大值
#include <stdio.h>
#include <stdlib.h>
int n , m ;
struct ks
{
//int xh;
int h1,m1,s1;//開始時間
int h2,m2,s2;//結束時間
int ph,pm,ps;//經過時間
int total;//用於比較的總時間
};
struct ks a[120] ;
int main()
{
int xh , i = 1 , j ;
int ci = 0 ;//儲存最大值的位置(學號)
scanf("%d %d",&n , &m);
int max = -1 ;
for( i = 1 ; i <= m ; i ++)
{
scanf("%d",&xh);
scanf("%d:%d:%d",&a[xh].h1,&a[xh].m1,&a[xh].s1);
scanf("%d:%d:%d",&a[xh].h2,&a[xh].m2,&a[xh].s2);
a[xh].ph += a[xh].h2 - a[xh].h1;
a[xh].pm += a[xh].m2 - a[xh].m1;
a[xh].ps += a[xh].s2 - a[xh].s1;
if(a[xh].ps >= 60)
{
//出現大於60的
a[xh].pm += 1;
a[xh].ps -= 60;
}
if(a[xh].pm >= 60)
{
//出現大於60的
a[xh].ph += 1;
a[xh].pm -= 60 ;
}
if(a[xh].pm < 0)
{
a[xh].pm += 60;
a[xh].ph -= 1;
}
if(a[xh].ps < 0)
{
a[xh].ps += 60;
a[xh].pm -= 1;
}
}
///找最大值
for(i = 0 ; i < n ; i ++)
{
a[i].total = a[i].ph*3600 + a[i].pm * 60 + a[i].ps;
//當時我的想法是一個個比較,
//但是不好比較如果小時和分鐘一樣就會出現錯誤
if(a[i].total > max)
{
//尋找最大值
max = a[i].total;
ci = i;
}
}
printf("快手狂人爲: %03d %02d:%02d:%02d",ci,a[ci].ph, a[ci].pm , a[ci].ps);
/*注意這裏要03d 我也不知道爲啥
明明題目說兩位數 輸出前導0就好
*/
return 0;
}
/*
測試用例
3 5
001 04:12:40 04:41:33
000 16:42:03 16:49:27
002 05:14:50 05:37:52
000 04:13:30 04:37:49
000 12:00:15 12:08:46
(一般樣例)
快手狂人爲: 000 00:40:14
3 5
000 04:12:40 04:41:33
001 16:42:03 16:49:27
002 05:14:50 05:37:52
001 04:13:30 04:37:49
001 12:00:15 12:08:46
(不在000的最大值)
快手狂人爲: 001 00:40:14
2 2
000 00:00:01 00:00:51
001 14:20:00 14:20:52
(0小時0分鐘 只有秒鐘)
快手狂人爲:001 00:00:52
1 2
000 13:30:00 13:30:50
000 13:20:00 13:20:04
快手狂人爲:000 00:00:54
2 3
000 11:00:30 12:00:00
001 11:00:00 12:00:00
000 01:00:02 01:00:52
快手狂人爲:000 01:00:20
2 3
001 11:00:30 12:00:00
000 11:00:00 12:00:00
001 01:00:02 01:00:52
快手狂人爲:001 00:01:20
1 1
000 01:30:12 02:30:12
快手狂人爲:00 01:00:00
1 2
00 01:12:31 02:21:01
00 12:23:34 13:00:00
快手狂人爲:00 01:44:56
2 4
00 11:12:30 12:01:40
01 12:07:01 12:30:55
00 13:01:20 15:30:20
01 15:00:00 18:00:00
(0 49 10)(2 29 0)
(0 23 54)(3 0 0)
快手達人爲: 01 03:23:54
3 4
00 03:45:51 03:51:41
01 13:45:13 14:23:00
02 14:59:23 15:30:50
00 13:00:13 14:55:00
(0 5 50)
(0 37 47)
(0 32 27)
(1 54 47)
02:00:37
*/