# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
923542 |
2024-02-07T12:04:08 Z |
Zygno |
Poi (IOI09_poi) |
C++17 |
|
221 ms |
16572 KB |
#include <bits/stdc++.h>
using namespace std;
struct contestant {
int id;
int score;
int solvedTasks;
int finalRank;
contestant(int _id, int _score, int _solvedTasks, int _finalRank) {
id = _id;
score = _score;
solvedTasks = _solvedTasks;
finalRank = _finalRank;
}
contestant() {
id = -1;
score = -1;
solvedTasks = -1;
finalRank = -1;
}
};
vector<vector<int>> scoreInput;
vector<int> taskScore;
vector<contestant> contestantScore;
bool customCompare(contestant a, contestant b) {
if(a.score > b.score) return true;
if(a.score < b.score) return false;
if(a.solvedTasks > b.solvedTasks) return true;
if(a.solvedTasks < b.solvedTasks) return false;
return a.id < b.id;
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
int n; // Number of contestants
int t; // Number of tasks
int p; // Philip’s ID was P
cin >> n >> t >> p;
//Read the task scores
for(int i = 0; i < n; i++){ // Contestant
scoreInput.push_back(std::vector<int>()); // Add a new row
for(int j = 0; j < t; j++){ // Task
int a;
cin >> a;
scoreInput[i].push_back(a); // Add an element to the first row
}
}
//Calculate the task scores
for(int j = 0; j < t; j++){ // Task
int points = 0;
for(int i = 0; i < n; i++){ // Contestant
if(scoreInput[i][j] == 0) points++;
}
taskScore.push_back(points);
}
//Calculate the contestant scores
for(int i = 0; i < n; i++){ // Contestant
int points = 0;
int solvedTasks = 0;
for(int j = 0; j < t; j++){ // Task
if(scoreInput[i][j] == 1){
points += taskScore[j];
solvedTasks++;
}
}
contestant temp = contestant(i+1, points, solvedTasks, -1);
contestantScore.push_back(temp);
}
//Sort the contestant scores
sort(contestantScore.begin(), contestantScore.end(), customCompare);
for(int i = 0; i < n; i++){
contestantScore[i].finalRank = i+1;
}
//Sort the contestant scores by id
sort(contestantScore.begin(), contestantScore.end(), [](contestant a, contestant b) {
return a.id < b.id;
});
cout << contestantScore[p-1].score << " " << contestantScore[p-1].finalRank << endl;
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
1 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
0 ms |
348 KB |
Output is correct |
5 |
Correct |
0 ms |
348 KB |
Output is correct |
6 |
Correct |
0 ms |
344 KB |
Output is correct |
7 |
Correct |
1 ms |
348 KB |
Output is correct |
8 |
Correct |
1 ms |
348 KB |
Output is correct |
9 |
Correct |
1 ms |
348 KB |
Output is correct |
10 |
Correct |
3 ms |
600 KB |
Output is correct |
11 |
Correct |
7 ms |
856 KB |
Output is correct |
12 |
Correct |
11 ms |
1300 KB |
Output is correct |
13 |
Correct |
32 ms |
3164 KB |
Output is correct |
14 |
Correct |
48 ms |
4592 KB |
Output is correct |
15 |
Correct |
83 ms |
10064 KB |
Output is correct |
16 |
Correct |
91 ms |
10820 KB |
Output is correct |
17 |
Correct |
137 ms |
12528 KB |
Output is correct |
18 |
Correct |
150 ms |
14432 KB |
Output is correct |
19 |
Correct |
201 ms |
16572 KB |
Output is correct |
20 |
Correct |
221 ms |
16404 KB |
Output is correct |