10分求助
查看原帖
10分求助
912388
chatoudp楼主2024/3/12 21:20

调了 n105105105n^{10^{5^{10^{5^{10^5}}}}} 个小时。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int dd,n;
struct S{
	string name,zy;
	int bg,dj,id;
}t[115];
int c(string s){
	if(s=="BangZhu") return 0;
	if(s=="FuBangZhu") return 1;
	if(s=="HuFa") return 2;
	if(s=="ZhangLao") return 3;
	if(s=="TangZhu") return 4;
	if(s=="JingYing") return 5;
	return 6;
}
bool cmp(S x,S y){
	if(x.bg==y.bg) return x.id<y.id;
	return x.bg>y.bg;
}
bool cmp2(S x,S y){
	if(c(x.zy)==c(y.zy)){
		if(x.dj==y.dj) return x.id<y.id;
		return x.dj>y.dj;
	} 
	else return c(x.zy)<c(y.zy);
}
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	cin>>dd;
	string a,b;
	int c,d;
	for(int i=1;i<=dd;i++){
		cin>>a>>b>>c>>d;
		if(b=="BangZhu"||b=="FuBangZhu") cout<<a<<' '<<b<<' '<<d<<'\n';
		else{
			n++;
			t[n].name=a;
			t[n].zy=b;
			t[n].bg=c;
			t[n].dj=d;
			t[n].id=n;
		}
	}
	sort(t+1,t+n+1,cmp);
	for(int i=1;i<=n;i++){
		if(i<=2) t[i].zy="HuFa";
		else if(i<=6) t[i].zy="ZangLao";
		else if(i<=13) t[i].zy="TangZhu";
		else if(i<=38) t[i].zy="JingYing";
		else t[i].zy="BangZhong";
	}
	sort(t+1,t+n+1,cmp2);
	for(int i=1;i<=n;i++)
		cout<<t[i].name<<' '<<t[i].zy<<' '<<t[i].dj<<'\n';
	return 0;
}

2024/3/12 21:20
加载中...