Submission #467268

# Submission time Handle Problem Language Result Execution time Memory
467268 2021-08-22T10:41:53 Z BlancaHM Poi (IOI09_poi) C++14
100 / 100
781 ms 23828 KB
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

vector<int> points, solutionsPerProblem, problemsSolved;

bool comp(int i, int j) {
	// comparator to sort players according to the rules
	if (points[i] > points[j])
		return true;
	else if (points[i] < points[j])
		return false;
	else if (problemsSolved[i] > problemsSolved[j])
		return true;
	else if (problemsSolved[i] < problemsSolved[j])
		return false;
	return i < j;
}

void sortPlayers(vector<vector<int>> & table, vector<int> & players) {
	int T = (int) table[0].size(), N = (int) players.size();
	for (int i = 0; i < T; i++) {
		for (int j = 0; j < N; j++)
			solutionsPerProblem[i] += table[j][i];
	}
	for (int i = 0; i < N; i++) {
		for (int j = 0; j < T; j++) {
			if (table[i][j]) {
				points[i] += (N-solutionsPerProblem[j]);
				problemsSolved[i]++;
			}
		}
	}

	sort(players.begin(), players.end(), comp);
}

int main() {
	int N, T, P;
	cin >> N >> T >> P;
	vector<vector<int>> table(N, vector<int>(T));
	vector<int> players(N);
	points.assign(N, 0);
	problemsSolved.assign(N, 0);
	solutionsPerProblem.assign(T, 0);
	for (int i = 0; i < N; i++) {
		players[i] = i;
		for (int j = 0; j < T; j++) {
			cin >> table[i][j];
		}
	}

	sortPlayers(table, players);

	for (int i = 0; i < N; i++) {
		if (players[i] == P-1) {
			cout << points[P-1] << " " << i+1 << "\n";
			break;
		}
	}
	return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 0 ms 204 KB Output is correct
5 Correct 1 ms 204 KB Output is correct
6 Correct 1 ms 204 KB Output is correct
7 Correct 1 ms 204 KB Output is correct
8 Correct 2 ms 204 KB Output is correct
9 Correct 3 ms 332 KB Output is correct
10 Correct 7 ms 480 KB Output is correct
11 Correct 23 ms 992 KB Output is correct
12 Correct 38 ms 1476 KB Output is correct
13 Correct 112 ms 3800 KB Output is correct
14 Correct 159 ms 5284 KB Output is correct
15 Correct 292 ms 9120 KB Output is correct
16 Correct 307 ms 9872 KB Output is correct
17 Correct 461 ms 14424 KB Output is correct
18 Correct 518 ms 16240 KB Output is correct
19 Correct 702 ms 21492 KB Output is correct
20 Correct 781 ms 23828 KB Output is correct