Average is not Fast Enough!Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 7106 Accepted Submission(s): 2962 http://acm.hdu.edu.cn/showproblem.php?pid=1036 Problem Description A relay is a race for two or more teams of runners. Each member of a team runs one section of the race. Your task is to help to evaluate the results of a relay race.
Input The first line of the input specifies the number of sections n followed by the total distance of the relay d in kilometers. You may safely assume that 1 <= n <= 20 and 0.0 < d < 200.0. Every following line gives information about one team: the team number t (an integer, right-justified in a field of width 3) is followed by the n results for each section, separated by a single space. These running times are given in the format "h:mm:ss" with integer numbers for the hours, minutes and seconds, respectively. In the special case of a runner being disqualified, the running time will be denoted by "-:--:--". Finally, the data on every line is terminated by a newline character. Input is terminated by EOF.
Output For each team output exactly one line giving the team's number t right aligned in a field of width 3, and the average time for this team rounded to whole seconds in the format "m:ss". If at least one of the team's runners has been disqualified, output "-" instead. Adhere to the sample output for the exact format of presentation.
Sample Input 2 12.5 5 0:23:21 0:25:01 42 0:23:32 -:--:-- 7 0:33:20 0:41:35
Sample Output 5: 3:52 min/km 42: - 7: 6:00 min/km |
注意精度,四舍五入。
代码:
#include<iostream>
#include<cstring>
#include<cmath>
#include<iomanip>
#include<algorithm>
#include<cstdio>
#define inf 0x3f3f3f3f
using namespace std;
char s[105];
int main()
{
int n,h;
double l;
scanf("%d %lf",&n,&l);
while(scanf("%d",&h)!=EOF)
{
double sum=0;
int flag=0;
printf("%3d:",h);
for(int i=0;i<n;i++)
{
scanf("%s",s);
if(s[0]!='-'&&!flag)
sum+=(s[0]-'0')*3600+((s[2]-'0')*10+s[3]-'0')*60+(s[5]-'0')*10+(s[6]-'0');
else
flag=1;
}
if(!flag)
{
int mmm=((sum/l+0.5)/60);
int sss=(int)(sum/l+0.5)%60;
printf("%2d:%02d min/km\n",mmm,sss);
}
else
printf(" -\n");
}
return 0;
}