题目传送门:
来自蒟蒻的疑惑
代码如下
#include<bits/stdc++.h>
using namespace std;
int n,r,q;
struct van
{
int point,power,bian,aj;
}a[201000],win[201000],los[201000];
bool cmp(van x,van y)
{
return x.point<y.point;
}
bool pmp(van x,van y)
{
return x.point>y.point;
}
int main()
{
cin>>n>>r>>q;
for(int i=1;i<=2*n;i++)
{
std::cin>>a[i].point;
}
for(int i=1;i<=2*n;i++)
{
std::cin>>a[i].power;
}
for(int i=1;i<=2*n;i++)
{
a[i].bian=i;
a[i].aj=i;
}
sort(a+1,a+1+2*n,cmp);
for(int i=1;i<=r;i++)
{
for(int i=1;i<=n;i++)
{
if(a[2*i-1].power>a[2*i].power)
{
win[i]=a[2*i-1];
los[i]=a[2*i];
}
else
{
win[i]=a[2*i];
los[i]=a[2*i-1];
}
}
for(int i=1;i<=n;i++)
{
win[i].point++;
a[win[i].aj].point++;
}
merge(win+1,win+n+1,los+1,los+n+1,a+1,cmp);
}
sort(a+1,a+1+2*n,pmp);
std::cout<<a[q].bian;
}