30分,绝对回关,在线等
查看原帖
30分,绝对回关,在线等
1364428
I_am_sb2楼主2025/7/23 20:19

测点

#include <bits/stdc++.h>
using namespace std;

struct node {
	int c, m, e;
	int cm, ma, he;
	int k, pm;
	bool s = 0;
};
int n, b[10010];
node a[10010];

bool cmp(node a, node &b) {
	if (a.he > b.he) {
		return 1;
	} else if (a.he == b.he) {
		if (a.cm > b.cm) {
			return 1;
		} else if (a.cm == b.cm) {
			if (a.ma > b.ma) {
				return 1;
			} else if (a.ma == b.ma) {
				b.s = 1;
				return 0;
			} else {
				return 0;
			}
		} else {
			return 0;
		}
	} else {
		return 0;
	}
}

bool cmp1(node a, node b) {
	if (a.k > b.k) {
		return 0;
	} else {
		return 1;
	}
}

int main() {
	cin >> n;
	for (int i = 0; i < n; i++) {
		cin >> a[i].c >> a[i].m >> a[i].e;
		a[i].k = i;
		a[i].he = a[i].c + a[i].e+a[i].m;
		a[i].cm = a[i].c + a[i].m;
		a[i].ma = max(a[i].c, a[i].m);
//		cout << a[i].ma << " " << a[i].he << " " << a[i].cm << " ";
	}
//	cout << endl;
//	cout << a[0].k << endl;
	sort(a, a + n, cmp);
	int xb = 1, w = 0;
//	b[a[0].k] = 1;
//	cout << b[a[0].k];
	for (int i = 0; i < n; i++) {
//		cout << a[i + 1].s << endl << endl;;
//		cout << a[i].k << "---" << a[i].s << "   ";
		if (a[i].s != 1) {
			a[i].pm = xb;
			xb += w;
			w = 0;
			xb++;
		} else {
			a[i].pm = xb;
			w++;
		}
	}
	sort(a, a + n, cmp1);
//	cout << endl;?
	for (int i = 0; i < n; i++) {
		cout << a[i].pm << endl;
	}
	return 0;
}

大佬能帮我检查下吗

2025/7/23 20:19
加载中...