Submission #915329

#TimeUsernameProblemLanguageResultExecution timeMemory
915329vjudge1Tenis (COCI20_tenis)C++17
50 / 110
1010 ms4636 KiB
#include "bits/stdc++.h" using namespace std; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); long long n; cin>>n; vector< vector<long long> > Lista(3, vector<long long>(n)); for(long long i = 0; i < 3; i++) for(long long j = 0; j < n; j++) cin>>Lista[i][j]; vector<long long> Partidos(3, 0); vector<long long> Victorias(n, 0); vector< vector<long long> > Posiciones(n, vector<long long>(3)); for(long long i = 0; i < 3; i++) for(long long j = 0; j < n; j++) Posiciones[Lista[i][j] - 1][i] = j + 1; /*for(auto E: Posiciones){ for(auto e: E) cout<<e<<" "; cout<<"\n"; }*/ for(long long i = 0; i < n - 1; i++){ for(long long j = i + 1; j < n; j++){ long long Ganador_1, Ganador_2, Ganador_3, Perdedor_1, Perdedor_2, Perdedor_3; if(Posiciones[i][0] < Posiciones[j][0]){ Ganador_1 = i; Perdedor_1 = j; } else { Ganador_1 = j; Perdedor_1 = i; } if(Posiciones[i][1] < Posiciones[j][1]){ Ganador_2 = i; Perdedor_2 = j; } else { Ganador_2 = j; Perdedor_2 = i; } if(Posiciones[i][2] < Posiciones[j][2]){ Ganador_3 = i; Perdedor_3 = j; } else { Ganador_3 = j; Perdedor_3 = i; } //cout<<Ganador_1<<" "<<Ganador_2<<" "<<Ganador_3<<" "<<Perdedor_1<<" "<<Perdedor_2<<" "<<Perdedor_3<<"\n"; /*if(Ganador_1 == Ganador_2 and Ganador_2 == Ganador_3){ Victorias[Ganador_2]++; long long Posici_n_1, Posici_n_2, Posici_n_3; Posici_n_1 = Posiciones[Ganador_2][0]; Posici_n_2 = Posiciones[Ganador_2][1]; Posici_n_3 = Posiciones[Ganador_2][2]; if(Posici_n_1 < Posici_n_2 and Posici_n_1 < Posici_n_3) Partidos[0]++; else if(Posici_n_2 < Posici_n_1 and Posici_n_2 < Posici_n_3) Partidos[1]++; else if(Posici_n_3 < Posici_n_2 and Posici_n_3 < Posici_n_1) Partidos[2]++; else { long long Menor = min(Posici_n_1, min(Posici_n_2, Posici_n_3)); long long Mejor = 2222222222222222; long long Actual = -1; if(Menor == Posici_n_1){ if(Posiciones[Perdedor_1][0] < Mejor){ Mejor = Posiciones[Perdedor_1][0]; Actual = 0; } } if(Menor == Posici_n_2){ if(Posiciones[Perdedor_2][1] < Mejor){ Mejor = Posiciones[Perdedor_2][1]; Actual = 1; } } if(Menor == Posici_n_3){ if(Posiciones[Perdedor_3][2] < Mejor){ Mejor = Posiciones[Perdedor_3][2]; Actual = 2; } } Partidos[Actual]++; } } else {*/ long long Mejor_1 = min(Posiciones[i][0], min(Posiciones[i][1], Posiciones[i][2])); long long Mejor_2 = min(Posiciones[j][0], min(Posiciones[j][1], Posiciones[j][2])); if(Mejor_1 == Mejor_2){ long long Mejor = 2222222222222222; long long Actual = -0; for(long long k = 0; k < 3; k++){ switch(k){ case 0: if(Posiciones[Perdedor_1][k] < Mejor and Posiciones[Ganador_1][k] == Mejor_2){ Mejor = Posiciones[Perdedor_1][k]; Actual = k; } break; case 1: if(Posiciones[Perdedor_2][k] < Mejor and Posiciones[Ganador_2][k] == Mejor_2){ Mejor = Posiciones[Perdedor_2][k]; Actual = k; } break; case 2: if(Posiciones[Perdedor_3][k] < Mejor and Posiciones[Ganador_3][k] == Mejor_2){ Mejor = Posiciones[Perdedor_3][k]; Actual = k; } break; } //cout<<Mejor<<" "<<Actual<<"\n"; } Partidos[Actual]++; if(Posiciones[i][Actual] < Posiciones[j][Actual]) Victorias[i]++; else Victorias[j]++; } else if(Mejor_1 < Mejor_2){ long long Mejor = 2222222222222222; long long Actual = -0; for(long long k = 0; k < 3; k++){ switch(k){ case 0: if(Posiciones[Perdedor_1][k] < Mejor and Posiciones[Ganador_1][k] == Mejor_1 and Ganador_1 == i){ Mejor = Posiciones[Perdedor_1][k]; Actual = k; } break; case 1: if(Posiciones[Perdedor_2][k] < Mejor and Posiciones[Ganador_2][k] == Mejor_1 and Ganador_2 == i){ Mejor = Posiciones[Perdedor_2][k]; Actual = k; } break; case 2: if(Posiciones[Perdedor_3][k] < Mejor and Posiciones[Ganador_3][k] == Mejor_1 and Ganador_3 == i){ Mejor = Posiciones[Perdedor_3][k]; Actual = k; } break; } //cout<<Mejor<<" "<<Actual<<"\n"; } Partidos[Actual]++; if(Posiciones[i][Actual] < Posiciones[j][Actual]) Victorias[i]++; else Victorias[j]++; } else if(Mejor_2 < Mejor_1){ long long Mejor = 2222222222222222; long long Actual = -0; for(long long k = 0; k < 3; k++){ switch(k){ case 0: if(Posiciones[Perdedor_1][k] < Mejor and Posiciones[Ganador_1][k] == Mejor_2 and Ganador_1 == j){ Mejor = Posiciones[Perdedor_1][k]; Actual = k; } break; case 1: if(Posiciones[Perdedor_2][k] < Mejor and Posiciones[Ganador_2][k] == Mejor_2 and Ganador_2 == j){ Mejor = Posiciones[Perdedor_2][k]; Actual = k; } break; case 2: if(Posiciones[Perdedor_3][k] < Mejor and Posiciones[Ganador_3][k] == Mejor_2 and Ganador_3 == j){ Mejor = Posiciones[Perdedor_3][k]; Actual = k; } break; } //cout<<Mejor<<" "<<Actual<<"\n"; } Partidos[Actual]++; if(Posiciones[i][Actual] < Posiciones[j][Actual]) Victorias[i]++; else Victorias[j]++; } //} } } for(auto E: Partidos) cout<<E<<" "; cout<<"\n"; for(auto E: Victorias) cout<<E<<" "; cout<<"\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...