#include<bits/stdc++.h>
#define fi first
#define se second
using namespace std;
const int N=1e5;
int tab[N+10][3];
int srt[N+10];
int ans[3];
int win[N+10];
int ww[3][3];
int www[3];
int mn_pos(int x)
{
return min({tab[x][0],tab[x][1],tab[x][2]});
}
void f(int a,int b)
{
vector<tuple<int,int,int>> tmp;
for(int i=0;i<3;i++)
tmp.emplace_back(min(tab[a][i],tab[b][i]),max(tab[a][i],tab[b][i]),i);
sort(tmp.begin(),tmp.end());
int c=get<2>(tmp[0]);
ans[c]++;
if(tab[a][c]<tab[b][c])
win[a]++;
else
win[b]++;
return;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n;
cin>>n;
for(int j=0;j<3;j++)
{
for(int i=1;i<=n;i++)
{
int x;
cin>>x;
tab[x][j]=i;
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<i;j++)
f(i,j);
}
//for(int i=1;i<=n;i++)
// srt[i]=i;
//sort(srt+1,srt+n+1,[](int a,int b){ return mn_pos(a)>mn_pos(b); });
//for(int i=1;i<=n;i++)
//{
// for(int j=max(1,i-2);j<i;j++)
// f(i,j);
// if(i-2>0)
// {
// win[i]+=i-3;
// int mn=mn_pos(i);
// vector<int> win_pos;
// for(int j=0;j<3;j++)
// {
// if(tab[i][j]==mn)
// win_pos.push_back(j);
// }
// if(win_pos.size()==1)
// ans[win_pos[0]]+=i-3;
// else if(win_pos.size()==2)
// {
// ans[win_pos[0]]+=ww[win_pos[0]][win_pos[1]];
// ans[win_pos[1]]+=ww[win_pos[1]][win_pos[0]];
// }
// else
// {
// for(int j=0;j<3;j++)
// ans[win_pos[j]]+=www[win_pos[j]];
// }
// vector<pair<int,int>> xd(3);
// for(int j=0;j<3;j++)
// xd[j]={tab[i-2][j],j};
// sort(xd.begin(),xd.end());
// www[xd[0].se]++;
// int g[3];
// for(int j=0;j<3;j++)
// g[xd[j].se]=j;
// for(int a=0;a<3;a++)
// {
// for(int b=0;b<3;b++)
// {
// if(g[a]<g[b])
// ww[a][b]++;
// }
// }
// }
//}
cout<<ans[0]<<" "<<ans[1]<<" "<<ans[2]<<"\n";
for(int i=1;i<=n;i++)
cout<<win[i]<<" \n"[i==n];
return 0;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
204 KB |
Output is correct |
2 |
Correct |
0 ms |
320 KB |
Output is correct |
3 |
Correct |
7 ms |
336 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
204 KB |
Output is correct |
2 |
Correct |
0 ms |
320 KB |
Output is correct |
3 |
Correct |
7 ms |
336 KB |
Output is correct |
4 |
Correct |
665 ms |
416 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
204 KB |
Output is correct |
2 |
Correct |
0 ms |
320 KB |
Output is correct |
3 |
Correct |
7 ms |
336 KB |
Output is correct |
4 |
Correct |
665 ms |
416 KB |
Output is correct |
5 |
Execution timed out |
1086 ms |
1464 KB |
Time limit exceeded |
6 |
Halted |
0 ms |
0 KB |
- |