Submission #351261

#TimeUsernameProblemLanguageResultExecution timeMemory
351261KirishinaPoi (IOI09_poi)C++14
100 / 100
651 ms16492 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 buscarPorID(int p, vector<DatosConcursante>& V) { long unsigned int i=0; bool encontrado=false; while(!encontrado && (i<V.size())){ if (V[i].id==p) encontrado=true; else i++; } return i; } int ranking(int p, vector<DatosConcursante>& V) { sort(V.begin(),V.end(),comparacion); return buscarPorID(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...