同样的代码交了几次,每次还都不一样的分。最后改来改去还是交源代码居然过了。。。。。
#include<iostream>
#include<set>
#include<algorithm>
#include<vector>
using namespace std;
struct MyStruct
{
string name, career;
int level, order;
long long contribution=0;
};
bool cmp(const MyStruct& a, const MyStruct& b) {
if (a.contribution == b.contribution)
return a.order < b.order;
else
return a.contribution > b.contribution;
}
bool cmp2(const MyStruct& a, const MyStruct& b) {
if (a.level == b.level)
return a.order < b.order;
else
return a.level > b.level;
}
MyStruct xinde[777];
int main() {
int n, i, j, k = 1;
string str;
MyStruct gang;
cin >> n;
for (i = 0; i < n; i++) {
cin >> gang.name >> gang.career >> gang.contribution >> gang.level;
gang.order = i;
xinde[i] = gang;
}
sort(xinde + 3, xinde + n, cmp);
for (i = 3; i < n; i++) {
if (k <= 2) {
xinde[i].career = "HuFa";
k++;
}
else if (k <= 6) {
xinde[i].career = "ZhangLao";
k++;
}
else if (k <= 13) {
xinde[i].career = "TangZhu";
k++;
}
else if (k <= 38) {
xinde[i].career = "JingYing";
k++;
}
else {
xinde[i].career = "BangZhong";
k++;
}
}
sort(xinde + 1, xinde + 3, cmp2);
sort(xinde + 3, xinde + 5, cmp2);
sort(xinde + 5, xinde + 9, cmp2);
sort(xinde + 9, xinde + 16, cmp2);
sort(xinde + 16, xinde + 41, cmp2);
sort(xinde + 41, xinde + 700, cmp2);
for (i = 0; i < n; i++) {
cout << xinde[i].name << " " << xinde[i].career << " " << xinde[i].level << endl;
}
return 0;
}