Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define Max 105
- struct player {
- int id, solved, penalty ;
- int factor[12],problems[12];
- bool submit;
- bool operator < (const player& a) const {
- if(solved == a.solved) {
- if(penalty == a.penalty)
- return id < a.id;
- else return penalty < a.penalty;
- } else return solved > a.solved;
- }
- } players[Max];
- void reset() {
- for(int i = 0; i < Max; i++) {
- players[i].id = i, players[i].solved = 0;
- players[i].submit = false, players[i].penalty = 0;
- memset(players[i].factor, 0, sizeof players[i].factor);
- memset(players[i].problems, 0, sizeof players[i].factor);
- }
- }
- int main() {
- #ifndef ONLINE_JUDGE
- freopen("input.txt", "r", stdin);
- #endif
- int tcase;
- int penalty, problemId, contestant;
- char verdict;
- char input[Max];
- scanf("%d", &tcase);
- getc(stdin);
- gets(input);
- while(tcase--) {
- reset();
- while(gets(input) and strcmp(input, "")) {
- sscanf(input, "%d %d %d %c", &contestant, &problemId, &penalty, &verdict);
- player obj;
- obj = players[contestant];
- obj.submit = true;
- players[contestant] = obj;
- if(verdict == 'R' or verdict == 'U' or verdict == 'E')
- continue;
- if(verdict == 'I' and obj.problems[problemId] == 0) {
- obj.factor[problemId]++;
- }
- if(verdict == 'C') {
- if(obj.problems[problemId] == 0) {
- obj.solved++;
- obj.penalty = obj.penalty + obj.factor[problemId] * 20 + penalty;
- }
- obj.problems[problemId] = 1;
- }
- players[contestant] = obj;
- }
- sort(players, players + Max);
- for(int i = 0; i < Max; i++) {
- player instance = players[i];
- if(instance.submit)
- printf("%d %d %d\n", instance.id, instance.solved, instance.penalty);
- }
- if(tcase) puts("");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement