30help!可关!
查看原帖
30help!可关!
1112350
hzy_Q楼主2024/9/4 19:50
#include<bits/stdc++.h>
using namespace std;
struct node
{
	int ch,ma,en,id,sum;
}a[10005],b[10005];
bool cmp(node x,node y)
{
	if(x.sum!=y.sum) return x.sum>y.sum;
	if((x.ch+x.ma)!=(y.ch+y.ma)) return (x.ch+x.ma)>(y.ch+y.ma);
	if(max(x.ch,x.ma)!=max(y.ch,y.ma)) return max(x.ch,x.ma)>max(y.ch,y.ma);
	else return x.sum<y.sum;
}
int main()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i].ch>>a[i].ma>>a[i].en;
		a[i].sum=a[i].ch+a[i].ma+a[i].en;
		b[i].ch=a[i].ch,b[i].ma=a[i].ma,b[i].en=a[i].en,b[i].sum=a[i].sum;
	}
	sort(a+1,a+n+1,cmp);
	int cnt=0;
	bool flag=false;
	for(int i=1;i<=n;i++)
	{
		if(i==1)
		{
			cnt++;
			a[i].id=1;
			continue;
		}
		if(a[i].sum==a[i+1].sum&&a[i].ch+a[i].ma==a[i+1].ch+a[i+1].ma&&max(a[i].ch,a[i].ma)==max(a[i+1].ch,a[i+1].ma))
		{
			if(flag==true)
			{
				a[i].id=cnt;
				a[i+1].id=cnt;
				continue;
			}
			cnt++;
			a[i].id=cnt;
			a[i+1].id=cnt;
			flag=true;
			continue;
		}
		if(flag==true)
		{
			flag=false;
			cnt++;
			continue;
		}
		cnt++;
		flag=false;
		a[i].id=cnt;
	}
	for(int i=1;i<=n;i++) 
	{
		for(int j=1;j<=n;j++)
		{
			if(a[i].ch==b[j].ch&&a[i].en==b[j].en&&a[i].ma==b[j].ma)
			{
				b[j].id=a[i].id;
			}
		}
	}
	for(int i=1;i<=n;i++) cout<<b[i].id<<endl;
	return 0;
}

求助各位哪里有问题,请各位大神指点%%%

2024/9/4 19:50
加载中...