#include struct player { int time; int correct; int *submissions; int num; bool *right; }; void main(void) { int data, cur_set, problems, submissions, participants, i, j; int cur_per, cur_tim, cur_cor, best; char cur_prob; ifstream read("PROBD.IN"); ofstream write("PROBD.OUT"); player *people, temp; read >> data; for(cur_set = 0; cur_set < data; cur_set++) { read >> problems >> submissions >> participants; people = new player[participants]; for(i = 0;i < participants; i++) { people[i].submissions = new int[problems]; people[i].right = new bool[problems]; for(j = 0;j < problems;j++) { people[i].submissions[j] = 0; people[i].right[j] = false; } people[i].num = i + 1; people[i].correct = 0; people[i].time = 0; } for(i = 0; i < submissions; i++) { read >> cur_per >> cur_prob >> cur_tim >> cur_cor; read.get(); cur_prob -= 'A'; people[cur_per - 1].submissions[cur_prob]++; if(cur_cor && people[cur_per -1].right[cur_prob] == false) { people[cur_per - 1].right[cur_prob] = true; people[cur_per - 1].correct++; people[cur_per - 1].time += (cur_tim + (people[cur_per - 1].submissions[cur_prob] - 1) * 20); } } write << "Data Set " << cur_set + 1 << ":\n"; for(i = 0; i < participants; i++) { best = i; for(j = i+1; j < participants; j++) if(people[j].correct > people[best].correct || (people[j].correct == people[best].correct && people[j].time < people[best].time)) best = j; write << people[best].num << " " << people[best].correct << " " << people[best].time << "\n"; temp = people[best]; people[best] = people[i]; people[i] = temp; } write << "\n"; } }