rt,自认为没什么问题,结果 0pts。
求大佬帮忙看一看。
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define FOR(i,x,y) for(ll i=x;i<=y;i++)
ll n;
struct node{
string name,job;
ll tribute,grade,pos,job_num;
};
node a[200];
bool cmp1(node s1,node s2){//按照帮贡排序。
if(s1.tribute==s2.tribute) return s1.pos<s2.pos;
return s1.tribute>s2.tribute;
}
bool cmp2(node s1,node s2){//按照职位,等级,位置排序。
if(s1.job==s2.job){
if(s1.grade==s2.grade) return s1.pos<s2.pos;
return s1.grade>s2.grade;
}
return s1.job_num<s2.job_num;
}
int main(){
cin>>n;
FOR(i,1,n){
cin>>a[i].name>>a[i].job>>a[i].tribute>>a[i].grade;
a[i].pos=i;
if(a[i].name=="BangZhu") a[i].tribute=1e10+10;
else if(a[i].name=="FuBangZhu") a[i].tribute=1e10;//设置帮贡。
}
sort(a+1,a+1+n,cmp1);
FOR(i,1,n)//分配职位。
if(i<2) a[i].job="Bangzhu",a[i].job_num=1;
else if(i<4) a[i].job="FuBangZhu",a[i].job_num=2;
else if(i<6) a[i].job="HuFa",a[i].job_num=3;
else if(i<10) a[i].job="ZhangLao",a[i].job_num=4;
else if(i<17) a[i].job="TangZhu",a[i].job_num=5;
else if(i<42) a[i].job="JingYing",a[i].job_num=6;
else a[i].job="BangZhong",a[i].job_num=7;
sort(a+1,a+1+n,cmp2);
FOR(i,1,n) cout<<a[i].name<<" "<<a[i].job<<" "<<a[i].grade<<endl;
return 0;
}