玄关求条40pts!!!
查看原帖
玄关求条40pts!!!
1140668
___W___Z___L___PVP楼主2024/12/25 21:31
#include <bits/stdc++.h>
using namespace std;

int n, k = 0, le = 5, su = 0, b[6] = {0, 25, 7, 4, 2};

struct rode {
	string name, st;
	int zhiwei, jin;
	int s;
} a[119];

bool cmp(rode x, rode y) {
	if (x.zhiwei != y.zhiwei)
		return x.zhiwei > y.zhiwei;
	else
		return x.s > y.s;
}
bool cmp1(rode x, rode y) {
	return x.jin > y.jin;
}

int main() {
	cin >> n;
	for (int i = 1; i <= n; i++) {
		cin >> a[i].name >> a[i].st >> a[i].jin >> a[i].s;
		if (a[i].st == "BangZhu")
			a[i].zhiwei = 7;
		if (a[i].st == "FuBangZhu")
			a[i].zhiwei = 6;
		if (a[i].st == "HuFa")
			a[i].zhiwei = 5;
		if (a[i].st == "ZhangLao")
			a[i].zhiwei = 4;
		if (a[i].st == "TangZhu")
			a[i].zhiwei = 3;
		if (a[i].st == "JingYing")
			a[i].zhiwei = 2;
		if (a[i].st == "BangZhong")
			a[i].zhiwei = 1;
	}
	stable_sort(a + 1, a + n + 1, cmp);
	for (int i = 1; i <= n; i++) {
		if (a[i].st == "HuFa") {
			k = i;
			break;
		}
	}
	stable_sort(a + k, a + n + 1, cmp1);
	for (int i = k; i <= n; i++) {
		if (le == 1)
			a[i].st = "BangZhong";
		else {
			if (su == b[le]) {
				le++;
				su = 0;
			} else {
				su++;
				if (b[le] == 2)
					a[i].st = "HuFa";
				if (b[le] == 4)
					a[i].st = "ZhangLao";
				if (b[le] == 7)
					a[i].st = "TangZhu";
				if (b[le] == 25)
					a[i].st = "JingYing";
			}
		}
	}
	for (int i = 1; i <= n; i++) {
		cout << a[i].name << ' ' << a[i].st << ' ' << a[i].s << '\n';
	}

	return 0;
}
2024/12/25 21:31
加载中...