求助90分T了一个
查看原帖
求助90分T了一个
733553
huangluyi2008楼主2022/8/25 01:09

超了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;
}
2022/8/25 01:09
加载中...