# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
923541 |
2024-02-07T12:00:13 Z |
Zygno |
Poi (IOI09_poi) |
C++17 |
|
504 ms |
24580 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(){
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 |
1 ms |
504 KB |
Output is correct |
2 |
Correct |
0 ms |
344 KB |
Output is correct |
3 |
Correct |
1 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 |
1 ms |
344 KB |
Output is correct |
7 |
Correct |
1 ms |
344 KB |
Output is correct |
8 |
Correct |
1 ms |
348 KB |
Output is correct |
9 |
Correct |
2 ms |
448 KB |
Output is correct |
10 |
Correct |
4 ms |
604 KB |
Output is correct |
11 |
Correct |
15 ms |
1116 KB |
Output is correct |
12 |
Correct |
25 ms |
1896 KB |
Output is correct |
13 |
Correct |
72 ms |
4276 KB |
Output is correct |
14 |
Correct |
103 ms |
6024 KB |
Output is correct |
15 |
Correct |
186 ms |
13036 KB |
Output is correct |
16 |
Correct |
208 ms |
14116 KB |
Output is correct |
17 |
Correct |
290 ms |
17236 KB |
Output is correct |
18 |
Correct |
339 ms |
19796 KB |
Output is correct |
19 |
Correct |
445 ms |
23452 KB |
Output is correct |
20 |
Correct |
504 ms |
24580 KB |
Output is correct |