求助万能谷民
  • 板块题目总版
  • 楼主DERMING
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/8/20 17:21
  • 上次更新2023/11/3 02:25:40
查看原帖
求助万能谷民
379271
DERMING楼主2023/8/20 17:21

P1309 WA 60分

#include<bits/stdc++.h>
using namespace std;
int n;
struct node
{
	int p;
	int win;
	int num;
}a[100010],x[100010],y[100010];
long long read()
{
	char ch;
	int ans=0;
	ch=getchar();
	while(!isdigit(ch))
	{
		ch=getchar();
	}
	while(isdigit(ch))
	{
		ans*=10;
		ans+=int(ch-'0');
		ch=getchar();
	}
	return ans;
}
bool cmp(node x,node y)
{
	if(x.win!=y.win)
	{
		return x.win>y.win;
	}
	else
	{
		return x.num<y.num;
	}
}
int main()
{
	int n,r,q;
	cin>>n>>r>>q;
	for(int i=1;i<=2*n;i++)
	{
		a[i].win=read();
		a[i].num=i;
	}
	for(int i=1;i<=2*n;i++)
	{
		a[i].p=read();
	}
	sort(a+1,a+1+2*n,cmp);
	for(int k=1;k<=r;k++)
	{
		for(int i=1;i<=n;i++)
		{
			if(a[i*2-1].p>a[i*2].p)
			{
				x[i]=a[i*2-1];
				x[i].win++;
				y[i]=a[i*2];
			}
			else
			{
				x[i]=a[i*2];
				x[i].win++;
				y[i]=a[i*2-1];
			}
		}
		int p1=1,p2=1;
		for(int i=1;i<=n*2;i++)
		{
			if(x[p1].win>y[p2].win&&p1<=n)
			{
				a[i]=x[p1];
				p1++;
			}
			else if(x[p1].win!=y[p2].win)
			{
				a[i]=y[p2];
				p2++;
			}
			else if(x[p1].num<y[p2].num)
			{
				a[i]=x[p1];
				p1++;
			}
			else
			{
				a[i]=y[p2];
				p2++;
			}
		}
	}
	cout<<a[q].num;
 	return 0;
}
2023/8/20 17:21
加载中...