Submission #347184

#TimeUsernameProblemLanguageResultExecution timeMemory
347184BlancaHMPoi (IOI09_poi)C++14
100 / 100
772 ms24172 KiB
#include <iostream> #include <vector> #include <algorithm> using namespace std; vector<int> puntos, solucionesPorProblema, problemasResueltos; bool comp(int i, int j) { // comparador para ordenar los jugadores if (puntos[i] > puntos[j]) return true; else if (puntos[i] < puntos[j]) return false; else if (problemasResueltos[i] > problemasResueltos[j]) return true; else if (problemasResueltos[i] < problemasResueltos[j]) return false; else return i < j; } void ordenarJugadores(vector<vector<int>> & tabla, vector<int> & jugadores) { int T = (int) tabla[0].size(), N = (int) jugadores.size(); for (int i = 0; i < T; i++) { for (int j = 0; j < N; j++) solucionesPorProblema[i] += tabla[j][i]; } for (int i = 0; i < N; i++) { for (int j = 0; j < T; j++) { if (tabla[i][j]) { puntos[i] += (N-solucionesPorProblema[j]); problemasResueltos[i]++; } } } sort(jugadores.begin(), jugadores.end(), comp); } int main() { int N, T, P; cin >> N >> T >> P; vector<vector<int>> tabla(N, vector<int>(T)); vector<int> jugadores(N); puntos.assign(N, 0); problemasResueltos.assign(N, 0); solucionesPorProblema.assign(T, 0); for (int i = 0; i < N; i++) { jugadores[i] = i; for (int j = 0; j < T; j++) { cin >> tabla[i][j]; } } ordenarJugadores(tabla, jugadores); for (int i = 0; i < N; i++) { if (jugadores[i] == P-1) { cout << puntos[P-1] << " " << i+1 << "\n"; break; } } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...