#include<iostream> #include<algorithm> #include<cstdio> #include<cstdlib> #include<cstring> #define foreach(it, l) for (typeof(l.begin()) it = l.begin(); it != l.end(); it++) #define db(a) cout << #a << " = " << a << endl; #define db2(a, b) cout << #a << " = " << a << " " << #b << " = " << b << endl; using namespace std; struct team { int id, solved[11], penalty[11]; bool submit; friend bool operator<(const team& a, const team& b) { if(a.solved[10] > b.solved[10]) return true; if(a.solved[10] == b.solved[10] && a.penalty[10] < b.penalty[10]) return true; if(a.solved[10] == b.solved[10] && a.penalty[10] == b.penalty[10] && a.id < b.id) return true; return false; } }; team equipos[101]; void reset() { for (int i = 0; i < 101; i++) { equipos[i].id = i; memset(equipos[i].solved, 0, sizeof equipos[i].solved); memset(equipos[i].penalty, 0, sizeof equipos[i].penalty); equipos[i].submit = false; } } void calcular(void) { for (int i = 1; i < 101; i++) { if(!equipos[i].submit) continue; for (int x = 1; x < 10; x++) { { if(equipos[i].solved[x]) { equipos[i].solved[10] ++; equipos[i].penalty[10] += equipos[i].penalty[x]; } } } } } int main() { int test, contestant, problem, time; char l; bool first = true; string linea; getline(cin, linea); test = atoi(linea.c_str()); getline(cin, linea); while (test--) { reset(); while (getline(cin, linea) && linea.size()) { sscanf(linea.c_str(), "%d %d %d %c", &contestant, &problem, &time, &l); equipos[contestant].submit = true; if(equipos[contestant].solved[problem]) continue; if(l == 'C' || l == 'I') { if (l == 'C') { equipos[contestant].solved[problem] = 1; equipos[contestant].penalty[problem] += time; } else equipos[contestant].penalty[problem] += 20; } } calcular(); if(!first) printf("\n"); first = false; sort(equipos, equipos + 101); for (int i = 0; i < 101; i++) { if(equipos[i].submit) printf("%d %d %d\n", equipos[i].id, equipos[i].solved[10], equipos[i].penalty[10]); } } return 0; }
lunes, 24 de octubre de 2011
10258 - Contest Scoreboard, uva
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario