#include<iostream> #include<cstdio> #include<string> #include<cstring> #include<algorithm> #include<vector> #include<cmath> using namespace std; typedef struct music { string name; string time; double t; int score; }music; double cal(string s) { int num1 = 0; for (int j = 0;j < 2;j++) { num1 = num1 * 10 + s[j] - '0'; } int num2 = 0; for (int j = 3;j < 5;j++) { num2 = num2 * 10 + s[j] - '0'; } return num1 * 60 + num2; } bool cmp(music a, music b) { if (a.score != b.score) return a.score > b.score; else if (a.score == b.score&&a.name != b.name) return a.name < b.name; } int main() { int n; music a[101]; while (cin >> n) { if (n == 0) break; else { for (int i = 0;i < n;i++) { cin >> a[i].name >> a[i].time; a[i].score = 0; a[i].t = cal(a[i].time); //cout << a[i].t << endl; } int m; cin >> m; while (m--) { string s1, s2; cin >> s1 >> s2; double time = cal(s2); for (int i = 0;i < n;i++) { if (s1 == a[i].name) { double x = a[i].t / (double)5; a[i].score += (int)(time / x); //cout << a[i].score; break; } } } sort(a, a + n, cmp); for (int i = 0;i < n;i++) { cout <<a[i].name<<" "<< a[i].score << endl; } } } return 0; } |
Double click to view unformatted code.