10pts求调
查看原帖
10pts求调
1296126
decode_snow楼主2024/10/18 09:26

RT

#include<bits/stdc++.h>
using namespace std;

long long n;

struct fenpei{
    string names;
    string zhiweis,xinzhiweis;
    long long rating;
    long long gives,xh;
}a[150];

int change(string a){
	if(a == "BangZhu"){
		return 1;
	}
	if(a == "FuBangZhu"){
		return 2;
	}
	if(a == "HuFa"){
		return 3;
	}
	if(a == "ZhangLao"){
		return 4;
	}
	if(a == "Tangzhu"){
		return 5;
	}
	if(a == "JingYing"){
		return 6;
	}
	if(a == "BangZhong"){
		return 7;
	}
}

bool cmp(fenpei a1,fenpei a2){
	if(a1.gives == a2.gives) return a1.xh < a2.xh;
    return a1.gives > a2.gives;
}

bool cmp2(fenpei a1,fenpei a2){
	if(change(a1.xinzhiweis)==change(a2.xinzhiweis)){
		if(a1.rating == a2.rating){
			return a1.xh < a2.xh;
		}
		return a1.rating > a2.rating;
	}
	return change(a1.xinzhiweis) < change(a2.xinzhiweis);
}

int main(){
    cin >> n;
    for(long long i=1;i<=n;i++){
        cin >> a[i].names >> a[i].zhiweis;
        cin >> a[i].gives >> a[i].rating;
    }

    sort(a+4,a+n+1,cmp);
    
    a[1].xinzhiweis = "BangZhu";
    a[2].xinzhiweis = "FuBangZhu";
    a[3].xinzhiweis = "FuBangZhu";

    for(long long i=4;i<=5 && i<=n;i++){
        a[i].xinzhiweis = "HuFa";
    }
    for(long long i=6;i<=9 && i<=n;i++){
        a[i].xinzhiweis = "ZhangLao";
    }
    for(long long i=10;i<=16 && i<=n;i++){
        a[i].xinzhiweis = "Tangzhu";
    }
    for(long long i=17;i<=41 && i<=n;i++){
        a[i].xinzhiweis = "JingYing";
    }
    for(long long i=41;i<=n;i++){
        a[i].xinzhiweis = "BangZhong";
    }

	sort(a+1,a+n+1,cmp2);
	
    for(long long i=1;i<=n;i++){
        cout << a[i].names << " " << a[i].xinzhiweis <<" "<< a[i].rating << endl;
    }

    return 0;
}

2024/10/18 09:26
加载中...