This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |