为社么看着哪里都对就是不对
查看原帖
为社么看着哪里都对就是不对
911575
yyt0618楼主2024/8/5 22:53
#include<bits/stdc++.h>
#define int long long
#define endl "\n"
using namespace std;
struct aa {
	int y, s, Y, z, p, zp, xp;
	bool k = 0;
} a[100001];
int n;
bool cmp(aa a, aa b) {
	if (a.z == b.z) {
		if ((a.y + a.s) == (b.y + b.s)) {
			if (max(a.y, a.s) == max(b.y, b.s)) {
				if (a.xp < b.xp)
					b.k = 1;
				else
					a.k = 1;
				return a.xp < b.xp;
			} else return max(a.y, a.s) > max(b.y, b.s);
		} else return (a.y + a.s) > (b.y + b.s);
	} else return a.z > b.z;
}
bool cmp1(aa a, aa b) {
	return a.xp < b.xp;
}
signed main() {
	cin >> n;
	for (int i = 1; i <= n; i++) {
		cin >> a[i].y >> a[i].s >> a[i].Y;
		a[i].z = a[i].y + a[i].s + a[i].Y;
		a[i].xp = i;
	}
	sort(a + 1, a + n + 1, cmp);
	for (int i = 1; i <= n; i++) {
		a[i].zp = i;
		int qq = 1;
		while (a[i + qq].k == 1) {
			a[i + qq].zp = a[i].zp;
			qq++;
		}
	}
	sort(a + 1, a + n + 1, cmp1);
	for (int i = 1; i <= n; i++) {
		cout << a[i].zp << endl;
	}
	return 0;
}
2024/8/5 22:53
加载中...