P1309 WA 60分
#include<bits/stdc++.h>
using namespace std;
int n;
struct node
{
int p;
int win;
int num;
}a[100010],x[100010],y[100010];
long long read()
{
char ch;
int ans=0;
ch=getchar();
while(!isdigit(ch))
{
ch=getchar();
}
while(isdigit(ch))
{
ans*=10;
ans+=int(ch-'0');
ch=getchar();
}
return ans;
}
bool cmp(node x,node y)
{
if(x.win!=y.win)
{
return x.win>y.win;
}
else
{
return x.num<y.num;
}
}
int main()
{
int n,r,q;
cin>>n>>r>>q;
for(int i=1;i<=2*n;i++)
{
a[i].win=read();
a[i].num=i;
}
for(int i=1;i<=2*n;i++)
{
a[i].p=read();
}
sort(a+1,a+1+2*n,cmp);
for(int k=1;k<=r;k++)
{
for(int i=1;i<=n;i++)
{
if(a[i*2-1].p>a[i*2].p)
{
x[i]=a[i*2-1];
x[i].win++;
y[i]=a[i*2];
}
else
{
x[i]=a[i*2];
x[i].win++;
y[i]=a[i*2-1];
}
}
int p1=1,p2=1;
for(int i=1;i<=n*2;i++)
{
if(x[p1].win>y[p2].win&&p1<=n)
{
a[i]=x[p1];
p1++;
}
else if(x[p1].win!=y[p2].win)
{
a[i]=y[p2];
p2++;
}
else if(x[p1].num<y[p2].num)
{
a[i]=x[p1];
p1++;
}
else
{
a[i]=y[p2];
p2++;
}
}
}
cout<<a[q].num;
return 0;
}