蒟蒻太弱,0pts求调
查看原帖
蒟蒻太弱,0pts求调
1121995
2021zjhs005楼主2023/12/28 19:57

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;
}

2023/12/28 19:57
加载中...