#include <cstdio>
#include<algorithm>
using namespace std;
inline int read()
{
int x=0;char c=getchar();
while (c<'0'||c>'9') c=getchar();
while (c>='0'&&c<='9') x=x*10+c-'0',c=getchar();
return x;
}
const int maxn = 1e5;
int n, r, q;
struct node {
int id, s, w;
} a[2 * maxn + 1];
bool cmp(node p1, node p2) {
if (p1.s == p2.s)
return p1.id < p2.id;
return p1.s > p2.s;
}
int main() {
n=read();r=read();q=read();
for (int i = 1; i <= 2 * n; i++) {
a[i].s=read();
a[i].id = i;
}
for (int i = 1; i <= 2 * n; i++)
a[i].w=read();
sort(a + 1, a + 2 * n + 1, cmp);
while (r--) {
for (int i = 1; i <= 2 * n; i += 2) {
if (a[i].w > a[i + 1].w)
a[i].s++;
else
a[i + 1].s++;
}
stable_sort(a + 1, a + 2 * n + 1, cmp);//注意这里改变成了stable_sort
}
printf("%d", a[q].id);
return 0;
}
#include <cstdio>
#include<algorithm>
using namespace std;
inline int read()
{
int x=0;char c=getchar();
while (c<'0'||c>'9') c=getchar();
while (c>='0'&&c<='9') x=x*10+c-'0',c=getchar();
return x;
}
const int maxn = 1e5;
int n, r, q;
struct node {
int id, s, w;
} a[2 * maxn + 1];
bool cmp(node p1, node p2) {
if (p1.s == p2.s)
return p1.id < p2.id;
return p1.s > p2.s;
}
int main() {
n=read();r=read();q=read();
for (int i = 1; i <= 2 * n; i++) {
a[i].s=read();
a[i].id = i;
}
for (int i = 1; i <= 2 * n; i++)
a[i].w=read();
sort(a + 1, a + 2 * n + 1, cmp);
while (r--) {
for (int i = 1; i <= 2 * n; i += 2) {
if (a[i].w > a[i + 1].w)
a[i].s++;
else
a[i + 1].s++;
}
sort(a + 1, a + 2 * n + 1, cmp);//注意这里
}
printf("%d", a[q].id);
return 0;
}
stable_sort为什么有这么大的优化???有无大佬解答