| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 | 
|---|---|---|---|---|---|---|---|
| 351261 | Kirishina | Poi (IOI09_poi) | C++14 | 651 ms | 16492 KiB | 
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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 | 
|---|---|---|---|---|
| Fetching results... | ||||
