#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