# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
351261 |
2021-01-19T17:53:05 Z |
Kirishina |
Poi (IOI09_poi) |
C++14 |
|
651 ms |
16492 KB |
#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 time |
Memory |
Grader output |
1 |
Correct |
1 ms |
364 KB |
Output is correct |
2 |
Correct |
1 ms |
364 KB |
Output is correct |
3 |
Correct |
1 ms |
364 KB |
Output is correct |
4 |
Correct |
1 ms |
364 KB |
Output is correct |
5 |
Correct |
1 ms |
364 KB |
Output is correct |
6 |
Correct |
1 ms |
364 KB |
Output is correct |
7 |
Correct |
2 ms |
364 KB |
Output is correct |
8 |
Correct |
2 ms |
364 KB |
Output is correct |
9 |
Correct |
3 ms |
364 KB |
Output is correct |
10 |
Correct |
6 ms |
492 KB |
Output is correct |
11 |
Correct |
20 ms |
1004 KB |
Output is correct |
12 |
Correct |
33 ms |
1516 KB |
Output is correct |
13 |
Correct |
98 ms |
3052 KB |
Output is correct |
14 |
Correct |
142 ms |
4076 KB |
Output is correct |
15 |
Correct |
249 ms |
6636 KB |
Output is correct |
16 |
Correct |
265 ms |
7148 KB |
Output is correct |
17 |
Correct |
399 ms |
10348 KB |
Output is correct |
18 |
Correct |
446 ms |
11500 KB |
Output is correct |
19 |
Correct |
597 ms |
14956 KB |
Output is correct |
20 |
Correct |
651 ms |
16492 KB |
Output is correct |