萌新30pts求调
查看原帖
萌新30pts求调
1120417
douhuazhenren1楼主2024/5/31 20:23

RT

#include <iostream>
#include <algorithm>
#include <stdlib.h>
using namespace std;
int n,k;
struct de
{
	int yu,shu,ying,sum;//sum总分
	int ys,ysg,s;//ys是语文数学总分
	//ysg是语文数学较高的那一科的分
	int p=0;//排名
}a[20010];
bool cmp(de x,de y)
{
	if(x.sum!=y.sum)
		return x.sum>y.sum;
	else if(x.ys!=y.ys)
		return x.ys>y.ys;
	else if(x.ysg!=y.ysg)
		return x.ysg>y.ysg;
	else{x.p=rand()%10000,y.p=x.p;return true; }
}
bool qmp(de x,de y)
{
	return x.s<y.s;
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		a[i].s=i;
		cin>>a[i].yu>>a[i].shu>>a[i].ying;
		a[i].sum=a[i].yu+a[i].shu+a[i].ying;
		a[i].ys=a[i].yu+a[i].shu;
		a[i].ysg=max(a[i].yu,a[i].shu);
	}
	sort(a+1,a+1+n,cmp);
	for(int i=1;i<=n;i++)
	{
		if(!a[i].p) 
			a[i].p=i;
		else
		{
			for(int j=1;;j++)
			{
				if(a[i].p==0)
				{
					k=j;
					break;
				}
				a[i].p=i;
			}
			i+=k;
		}
	}
	sort(a+1,a+1+n,qmp);
	for(int i=1;i<=n;i++)
		cout<<a[i].p<<endl;
	return 0;
}

样例也过不去

2024/5/31 20:23
加载中...