玄关求调,给个hack也行,样例能过
查看原帖
玄关求调,给个hack也行,样例能过
1111160
starish楼主2024/5/25 17:00
#include <bits/stdc++.h>
using namespace std;
#define int long long

struct stt {
	string name, posi;
	int vol, level;
} a[205];

bool cmp(stt a, stt b) {
	return a.vol >= b.vol;
}

bool dmp(stt a, stt b) {
	int a1 = 114, a2 = 114;
	if (a.posi == "BangZhu")
		a1 = 0;
	else if (a.posi == "FuBangZhu")
		a1 = 1;
	else if (a.posi == "HuFa")
		a1 = 2;
	else if (a.posi == "ZhangLao")
		a1 = 3;
	else if (a.posi == "TangZhu")
		a1 = 4;
	else if (a.posi == "JingYing")
		a1 = 5;
	else if (a.posi == "BangZhong")
		a1 = 6;
	if (b.posi == "BangZhu")
		a2 = 0;
	else if (b.posi == "FuBangZhu")
		a2 = 1;
	else if (b.posi == "HuFa")
		a2 = 2;
	else if (b.posi == "ZhangLao")
		a2 = 3;
	else if (b.posi == "TangZhu")
		a2 = 4;
	else if (b.posi == "JingYing")
		a2 = 5;
	else if (b.posi == "BangZhong")
		a2 = 6;
	if (a1 > a2)
		return 0;
	else if (a1 == a2)
		return a.level >= b.level;
}
int  n;
int h, z, t, j;

signed main() {
	cin >> n;
	for (int i = 1; i <= n; i++) {
		cin >> a[i].name >> a[i].posi >> a[i].vol >> a[i].level;
	}
	sort(a + 1, a + n + 1, cmp);
	for (int i = 1; i <= n; i++) {
		if (a[i].posi != "BangZhu" && a[i].posi != "FuBangZhu") {
			if (h < 2) {
				a[i].posi = "HuFa";
				h++;
			} else if (z < 4) {
				a[i].posi = "ZhangLao";
				z++;
			} else if (t < 7) {
				a[i].posi = "TangZhu";
				t++;
			} else if (j < 25) {
				a[i].posi = "JingYing";
				j++;
			} else {
				a[i].posi = "BangZhong";
			}
		}
	}
	sort(a + 1, a + n + 1, dmp);
	for (int i = 1; i <= n; i++)
		cout << a[i].name << " " << a[i].posi << " " << a[i].level << endl;
}

评测状态

2024/5/25 17:00
加载中...