Submission #351178

#TimeUsernameProblemLanguageResultExecution timeMemory
351178KirishinaPoi (IOI09_poi)C++14
100 / 100
704 ms23984 KiB
#include <iostream> #include <vector> #include <algorithm> using namespace std; struct DatosConcursante { int id; int puntos; int problemasResueltos; }; bool comparacion(const DatosConcursante& a, const DatosConcursante& b) { if (a.puntos == b.puntos){ if (a.problemasResueltos == b.problemasResueltos){ return a.id < b.id; }else{return a.problemasResueltos > b.problemasResueltos;} }else {return a.puntos > b.puntos;} } int find_index(int p,vector<DatosConcursante>& V) { auto it = std::find_if(V.begin(), V.end(), [p](const DatosConcursante& a) { return a.id == p;}); if (it == V.end()) return -1; else return it - V.begin(); } int ranking(int p, vector<DatosConcursante>& V) { sort(V.begin(),V.end(),comparacion); return find_index(p,V)+1; } int main() { int N,T,P; // N: Nº concursantes , T: Nº tareas, P: ID Philip vector <int> puntosTareas; // Valor em puntos de cada tarea i 0=<i<=T-1 cin >> N >> T >> P; vector <DatosConcursante> dc(N); int mCT[N][T]; // Matriz concursantes x Tareas puntosTareas.assign(T,N); // Inicialmente cada tarea tendrá el total de puntos N // iremos restando para cada concursante que la haya realizado int tareaRealizada; // Calculamos/guardamos problemas resueltos por cada concursante. Calculamos los puntos de cada tarea for(int concursante=0; concursante<N;++concursante){ for(int tarea=0; tarea<T;++tarea){ cin>>tareaRealizada; mCT[concursante][tarea]=tareaRealizada; puntosTareas[tarea]-=tareaRealizada; dc[concursante].problemasResueltos+=tareaRealizada; } } // Calculamos los puntos de cada concursante y guardamos. Guardamos su posición for(int concursante=0; concursante<N;++concursante){ dc[concursante].id=concursante+1; for(int tarea=0; tarea<T;++tarea){ dc[concursante].puntos += mCT[concursante][tarea]*puntosTareas[tarea]; } } // Mostramos puntos Philip y ranking ranking cout<<dc[P-1].puntos << " " << ranking(P,dc) << '\n' ; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...