为什么开了O2还是有两个TLE
查看原帖
为什么开了O2还是有两个TLE
1019780
kun_yu楼主2023/10/7 20:53
#include<bits/stdc++.h>
using namespace std;
const int K=1e5*2+100;
int N,R,Q;
struct re{
	int point,shili,bianhao;
}a[K];
bool cmp(re x,re y){
	if(x.point==y.point){
		return x.bianhao<y.bianhao;
	}
	else{
		return x.point>y.point;
	}
}
void px(){
	sort(a+1,a+1+N*2,cmp);
	for(int i=1;i<=N*2;i+=2){
		if(a[i].shili>a[i+1].shili){
			a[i].point++;
		}
		if(a[i].shili<a[i+1].shili){
			a[i+1].point++;
		}
	}
}
int main(){
	ios::sync_with_stdio(false);
	cin>>N>>R>>Q;
	for(int i=1;i<=N*2;i++){
		cin>>a[i].point;
		a[i].bianhao=i;
	}
	for(int i=1;i<=N*2;i++){
		cin>>a[i].shili;
	}
	while(R--){
		px();
	}
	sort(a+1,a+1+N*2,cmp);
	cout<<a[Q].bianhao;
	return 0;
}
2023/10/7 20:53
加载中...