超了66ms,还能怎么卡常?
#pragma GCC optimize(1)
#pragma GCC optimize(2)
#pragma GCC optimize(3,"Ofast","inline")
#include<cstdio>
#include<algorithm>
using namespace std;
int n,r,q;
struct node {
int s,w,id;
} a[200005];
inline bool cmp(node a,node b) {
if(a.s==b.s)return a.id<b.id;
return a.s>b.s;
}
const int __buffsize = 100000;
char __buff[__buffsize];
char *__buffs, *__buffe;
#define getc() (__buffs == __buffe ? fread(__buff, 1, __buffsize, stdin), __buffe = __buff + __buffsize, *((__buffs = __buff)++): *(__buffs++))
template<typename T> inline T &read(T &x) {
static char c;
while (1) {
c = getc();
if (c == '-' || (c >= '0' && c <= '9')) break;
}
bool flag = c == '-';
x = flag ? 0 : c - '0';
while (1) {
c = getc();
if (c < '0' || c > '9') break;
(x *= 10) += c - '0';
}
if (flag) x = -x;
return x;
}
int main() {
read(n),read(r),read(q);
n*=2;
for(register int i=1; i<=n; ++i) {
read(a[i].s);
a[i].id=i;
}
for(register int i=1; i<=n; ++i) {
read(a[i].w);
}
sort(a+1,a+1+n,cmp);
for(register int k=1; k<=r; ++k) {
for(register int i=1; i<=n; i+=2) {
if(a[i].w>a[i+1].w) {
a[i].s++;
} else {
a[i+1].s++;
}
}
stable_sort(a+1,a+1+n,cmp);
}
printf("%d",a[q].id);
return 0;
}