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;
#define int long long
signed main()
{
int n;
cin>>n;
int r[n][3],x;
for (int j=0;j<3;j++)
for (int i=0;i<n;i++)
{
cin>>x;
r[x-1][j]=i;
}
vector<int> bestr[n];
for (int i=0;i<n;i++)
{
int mn=r[i][0];
for (int j=1;j<3;j++)
mn=min(mn,r[i][j]);
bestr[mn].push_back(i);
}
int wins[n],court[3]={},cnt=0;
for (int i=n-1;i>=0;i--)
{
for (int j:bestr[i])
wins[j]=cnt;
cnt+=bestr[i].size();
for (int j=0;j<bestr[i].size();j++)
for (int k=j+1;k<bestr[i].size();k++)
{
int cor=-1,mn=n;
for (int c=0;c<3;c++)
{
if (r[bestr[i][j]][c]>i && r[bestr[i][k]][c]>i)
continue;
if (r[bestr[i][j]][c]==i)
if (mn>r[bestr[i][k]][c])
cor=c,mn=r[bestr[i][k]][c];
if (r[bestr[i][k]][c]==i)
if (mn>r[bestr[i][j]][c])
cor=c,mn=r[bestr[i][j]][c];
}
court[cor]++;
if (r[bestr[i][j]][cor]==i)
wins[bestr[i][j]]++;
else
wins[bestr[i][k]]++;
}
}
cnt=0;
int idk[3][3]={},bst[3]={};
for (int i=n-1;i>=0;i--)
{
for (int j:bestr[i])
{
vector<int> v;
for (int c=0;c<3;c++)
if (r[j][c]==i)
v.push_back(c);
if (v.size()==1)
court[v[0]]+=cnt;
else if(v.size()==2)
{
court[v[0]]+=idk[v[0]][v[1]];
court[v[1]]+=idk[v[1]][v[0]];
}
else
{
for (int k:v)
court[k]+=bst[k];
}
}
for (int j:bestr[i])
{
for (int c=0;c<3;c++)
for (int c1=0;c1<3;c1++)
{
if (c==c1 || r[j][c]>r[j][c1])
continue;
if (r[j][c]<r[j][c1])
idk[c][c1]++;
else if(c<c1)
idk[c][c1]++;
}
int cor;
for (int c=2;c>=0;c--)
if (r[j][c]==i)
cor=c;
bst[cor]++;
}
cnt+=bestr[i].size();
}
for (int j=0;j<3;j++)
cout<<court[j]<<' ';
cout<<endl;
for (int j=0;j<n;j++)
cout<<wins[j]<<' ';
cout<<endl;
return 0;
}
Compilation message (stderr)
tenis.cpp: In function 'int main()':
tenis.cpp:32:17: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
32 | for (int j=0;j<bestr[i].size();j++)
| ~^~~~~~~~~~~~~~~~
tenis.cpp:33:20: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
33 | for (int k=j+1;k<bestr[i].size();k++)
| ~^~~~~~~~~~~~~~~~
tenis.cpp:93:11: warning: 'cor' may be used uninitialized in this function [-Wmaybe-uninitialized]
93 | bst[cor]++;
| ~~~~~~~^
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |