求调
  • 板块灌水区
  • 楼主lishitang
  • 当前回复17
  • 已保存回复17
  • 发布时间2023/8/22 22:57
  • 上次更新2023/11/3 01:52:04
查看原帖
求调
736900
lishitang楼主2023/8/22 22:57

P1309

这是代码:

#include<iostream>
#include<algorithm>
#include<vector>

using namespace std;
inline int read(){
	int x=0,f=1;
	char c=getchar();
	while(c<'0'||c>'9'){if(c=='-')f*=-1;c=getchar();};
	while(c>='0'&&c<='9'){x=(x<<3)+(x<<1)+c-'0';c=getchar();};
	return x*f;
}
const int N=100000;
struct node{
	int s,w,id;
}a[N+10];
int n,r,q;
vector<node>A,B;

bool cmp(node x,node y){
	if(x.s==y.s)return x.id<y.id;
	return x.s>y.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+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++;a[i+1].s--;
				A.push_back(a[i]);B.push_back(a[i+1]); 
			}else{
				a[i].s--;a[i+1].s++;
				A.push_back(a[i+1]);B.push_back(a[i]);
			}
		}
		if(r>1){
			int k=1,i=0,j=0;
			for(;i<A.size()&&j<B.size();){
				if(cmp(A[i],B[j])){
					a[k++]=A[i++];
				}else{
					a[k++]=B[j++];
				}
			}
			while(i<A.size())a[k++]=A[i++];while(j<B.size())a[k++]=B[j++];
			while(A.size())A.pop_back();while(B.size())B.pop_back();
		}
	}
	cout<<a[q].id<<endl;
	return 0;
} 

只过了10pts

2023/8/22 22:57
加载中...