POJ 2565 - Average is not Fast Enough!

http://poj.org/problem?id=2565

概要

各チーム毎に,n 人のタイムが与えられる. 全体の距離が d のときの,距離当たりの時間を答える.

ただし,走者が disqualified のときはタイムが -:--:-- で与えられ,1人でも disqualified であればそのチームの答えは - とする.

制約

解法

やるだけ.

 1 #include <cstdio>
 2 #include <cmath>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7   int n;
 8   double d;
 9   scanf("%d %lf", &n, &d);
10 
11   int t;
12   while (scanf("%d", &t) != EOF) {
13     bool disqual = false;
14     int ttl = 0;
15     for (int i = 0; i < n; i++) {
16       char hmmss[20];
17       scanf("%s", hmmss);
18       if (hmmss[0] == '-') {
19         disqual = true;
20       } else {
21         int h = hmmss[0]-'0';
22         int m = 10*(hmmss[2]-'0')+(hmmss[3]-'0');
23         int s = 10*(hmmss[5]-'0')+(hmmss[6]-'0');
24         ttl += 3600*h + 60*m + s;
25       }
26     }
27     printf("%3d: ", t);
28     if (disqual) {
29       puts("-");
30     } else {
31       int s = lround(ttl / d);
32       printf("%d:%02d min/km\n", s/60, s%60);
33     }
34   }
35   return 0;
36 }
poj/2565.cc