p1309模拟题70pts求条
  • 板块学术版
  • 楼主lyc20110701
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/11/20 20:30
  • 上次更新2024/11/20 22:04:20
查看原帖
p1309模拟题70pts求条
1126841
lyc20110701楼主2024/11/20 20:30

题面 真的很模拟啊!不知道为什么错了,求教

#include<bits/stdc++.h>
using namespace std;

int n,r,q;
//typedef pair<int,int> PII;
//PII a[100005];
struct S{
	int firs,secon,c;
};
S a[100005];
bool cmp(S a,S b){
	return a.firs!=b.firs?a.firs>b.firs:a.c<b.c;
}
inline int read(){
	int ret=0;
	char ch=' ',c=getchar();
	while(!('0'<=c&&c<='9')) ch=c,c=getchar();
	while('0'<=c&&c<='9') ret=(ret<<1)+(ret<<3)+c-'0',c=getchar();
	return ch=='-'?-ret:ret; 
}

int main(){
	

	n=read(),r=read(),q=read();
	n*=2;

	for(int i=1;i<=n;i++) a[i].firs=read(),a[i].c=i;//对初始分数进行读入,同步处理序号
	
	for(int i=1;i<=n;i++) a[i].secon=read();//("%d",&a[i].secon);//读入能力
	

	for(int t=1;t<=r;t++){
		sort(a+1,a+n+1,cmp);
		for(int i=1;i+1<=n;i+=2){
//			printf("%d-%d\n",a[i].c,a[i+1].c);//debug
			if(a[i].secon>a[i+1].secon) a[i].firs++;//处理分数
			else a[i+1].firs++;
		}
	}
	sort(a+1,a+n+1,cmp);//最后排序
	cout<<a[q].c;	
//	for(int i=1;i<=n;i++) printf(" =%d %d",a[i].firs,a[i].c);//debug
	
	
	
	return 0;
}
2024/11/20 20:30
加载中...