#3#4#5RE
查看原帖
#3#4#5RE
745288
Joker_Error_404楼主2023/12/15 18:21
#include<iostream>
#include<algorithm>
using namespace std;
struct node {
	string name, zhiwei;
	int banggong, dengji;
} a[200], b[200], c[200];
istream &operator >> (istream &ist, node &a) {
	cin >> a.name >> a.zhiwei >> a.banggong >> a.dengji;
	return ist;
}
ostream &operator << (ostream &ost, const node &a) {
	cout << a.name << ' '<< a.zhiwei << ' ' << a.dengji;
	return ost;
}
inline bool cmp(const node &a, const node &b) {
	return a.banggong >= b.banggong;
}
string sc[6] = {"BangZhu","FuBangZhu","HuFa","ZhangLao","TangZhu","JingYing"};
inline int fi(const node &a) {
	for (int i = 0;; ++i) {
		if (a.zhiwei == sc[i])
			return i;
	}
}
inline bool cmp1(const node &a, const node &b) {
	if (a.zhiwei == b.zhiwei) 
		return a.dengji > b.dengji;
	return fi(a) < fi(b);
	
}
inline int f(const node &g) {
	for (int i = 0; ; ++i) {
		if (a[i].name == g.name)
			return i;
	}
}
int main() {//B F H Z T J B
	int n, p(0), s[4] = {2,4,7,25};
	string s1[4] = {"HuFa","ZhangLao","TangZhu","JingYing"};
	cin >> n;
	for (int i = 0; i < n; ++i) {
		cin >> a[i];
		c[i] = a[i];
		if (a[i].name != "absi2011" && a[i].zhiwei != "BangZhu"
		        && a[i].zhiwei != "FuBangZhu") {
			b[p] = a[i];
			++p;
		}
	}
	sort(b, b + p, cmp);
	int now(0);
	for (int i = 0; i < n; ++i) {
		if (a[i].zhiwei != "BangZhu" && a[i].zhiwei != "FuBangZhu") {
			a[i] = b[now++];
		}
	}
	for (int i = 3; i < n; ++i) {
		if (a[i].zhiwei != "BangZhu" && a[i].zhiwei != "FuBangZhu") continue;
		else {
			bool flag(1);
			for (int j = 0; j < 4; ++j) {
				if (s[j]) {
					a[i].zhiwei = s1[j];
					--s[j];
					flag = 0;
					break;
				}
			}
			if (flag)
				a[i].zhiwei = "BangZhong";
		}
	}
//	cout << endl;
//	for (int i = 0; i < n; ++i)
//		cout << a[i] <<endl;
//	cout << endl;
	for (int i = 0; i < n; ++i) {
		c[i].zhiwei = a[f(c[i])].zhiwei;
	}
	stable_sort(c, c + n, cmp1);
	for (int i = 0; i < n; ++i) {
		cout << c[i] <<endl;
	}
	return 0;
}
2023/12/15 18:21
加载中...