请帮忙指出问题谢谢(0分代码)
查看原帖
请帮忙指出问题谢谢(0分代码)
1064476
ddd0603楼主2024/6/15 21:39
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
struct stu
{
	int id, s, c, m, e, cm, cmmax, pm;
};
bool cmp1(stu a, stu b)
{
	if(a.s != b.s)
		return a.s > b.s;
	if(a.cm != b.cm)
		return a.cm > b.cm;
	if(a.cmmax != b.cmmax)
		return a.cmmax > b.cmmax;
}
bool cmp2(stu a, stu b)
{
	return a.id < b.id;
}
int main()
{
	int n;
	cin >> n;
	stu a[n];
	for(int i = 0; i < n; i ++)
	{
		cin >> a[i].c >> a[i].m >> a[i].e;
		a[i].id = i;
		a[i].s = a[i].c + a[i].m + a[i].e;
		a[i].cm = a[i].c + a[i].m; 
		a[i].cmmax = max(a[i].c, a[i].m);
		a[i].pm = 0;
	}
	sort(a, a + n, cmp1);
	for(int i = 0; i < n - 1; i ++)
	{
		int j = i, l = 0;
		while(a[j].cmmax == a[j + 1].cmmax)
		{
			a[j].pm = i + 1;
			a[j + 1].pm = i + 1;
			j ++;
		}
		if(a[i].pm == 0) 
			a[i].pm = i + 1;
	}
	if(a[n - 1].pm == 0)
		a[n - 1].pm = n;
	sort(a, a + n, cmp2);
	for(int i = 0; i < n; i ++)
		cout << a[i].pm << endl;
	return 0;
} 
2024/6/15 21:39
加载中...