RT
程序如下
#include<bits/stdc++.h>
using namespace std;
inline int read()
{
int ans = 0;
char last = ' ', ch = getchar();
while (ch<'0' || ch>'9') last = ch, ch = getchar();
while (ch >= '0' && ch <= '9')ans = ans * 10 + ch - '0', ch = getchar();
if (last == '-')ans = -ans;
return ans;
}
struct player
{
int feng, xuhao, nengli;
};
player a[1000000];
int n, k, q, t, R;
void kp(int l, int r)
{
int i, j;
player mid, rq;
i = l, j = r;
mid.feng = a[(l + r) / 2].feng, mid.xuhao = a[(l + r) / 2].xuhao;
do
{
while(a[i].feng > mid.feng || ((a[i].feng == mid.feng) && (a[i].xuhao < a[i].xuhao))) i ++;
while(a[j].feng < mid.feng || ((a[j].feng == mid.feng) && (a[j].xuhao < a[j].xuhao))) j --;
if(i <= j)
{
rq.feng = a[i].feng; a[i].feng = a[j].feng; a[j].feng = rq.feng;
rq.xuhao = a[i].xuhao; a[i].xuhao = a[j].xuhao; a[j].xuhao = rq.xuhao;
rq.nengli = a[i].nengli; a[i].nengli = a[j].nengli; a[j].nengli = rq.nengli;
i ++; j --;
}
}while(i <= j);
if(l < j) kp(l, j);
if(i < r) kp(i, r);
}
int main()
{
n = read(); R = read(); q = read();
for(int i = 1; i <= 2 * n; i ++)
{
a[i].feng = read();
a[i].xuhao = i;
}
for(int j = 1; j <= n * 2; j ++)
a[j].nengli = read();
kp(1, 2 * n);
for(int j = 1; j <= R; j ++)
{
for(int i = 1; i <= 2 * n; i +=2)
{
if(a[i].nengli > a[i+1].nengli) a[i].feng ++;
else a[i + 1].feng ++;
}
kp(1, 2 * n);
}
cout << a[q].xuhao;
return 0;
}