40分代码,求助!
查看原帖
40分代码,求助!
417477
AoPSer楼主2020/11/3 22:19

代码如下:

#include<bits/stdc++.h>
using namespace std;
struct data{
	int num,s,w;
}a[200005];
priority_queue<data>q;
data x[100005],y[100005];
bool operator < (data x,data y){
	return x.s<y.s ||(x.s==y.s&&x.num>y.num);
}
int n,r,Q;
int main()
{
 	scanf("%d%d%d",&n,&r,&Q);
 	for(register int i=1;i<=2*n;i++)scanf("%d",&a[i].s),a[i].num=i;
 	for(register int i=1;i<=2*n;i++)scanf("%d",&a[i].w);
 	for(register int i=1;i<=n*2;i++)q.push(a[i]);
 	for(register int k=1;k<=r;k++)
 	{
 		for(register int i=1;i<=n;i++)
 		{
 			x[i]=q.top();
 			q.pop();
 			y[i]=q.top();
 			q.pop();
 			if(x[i].w>y[i].w)x[i].s+=1;
 			else y[i].s+=1;
 		}
 		for(register int i=1;i<=n;i++)q.push(x[i]),q.push(y[i]);
 	}
 	for(register int i=1;i<Q;i++)q.pop();
 	printf("%d",q.top().num);
}
2020/11/3 22:19
加载中...