#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;
}
评测状态