兄弟们求助一波,不明白为啥只过了第一个和第十个点
查看原帖
兄弟们求助一波,不明白为啥只过了第一个和第十个点
235786
Alone0213楼主2021/2/28 17:14
#include<bits/stdc++.h>
using namespace std;
int n,a,b,c;
bool op;
struct node{
	char name[33],job[33];
	int length,length1,zj;
	int bg,dj;
}bang[120];
bool cmp(node a,node b){
	if(a.bg==b.bg){
		return a.dj>=b.dj;
	}
	return a.bg>b.bg;
}
bool cmp1(node a,node b){
	if(a.zj==b.zj){
		return a.dj>b.dj;
	}
	return a.zj<b.zj;
}
void swap(node a,node b){
	int bg=a.bg;
	int dj=a.dj;
	int length1=a.length1;
	char name[33];
	char job[33];
	for(int i=0; i<=30; i++){
		name[i]=a.name[i];
		job[i]=a.job[i];
	}
	a.bg=b.bg;
	a.dj=b.dj;
	a.length1=b.length1;
	for(int i=0; i<=30; i++){
		a.name[i]=b.name[i];
		a.job[i]=b.job[i];
	}
	b.bg=bg;
	b.dj=dj;
	b.length1=length1;
	for(int i=0; i<=30; i++){
		b.name[i]=name[i];
		b.job[i]=job[i];
	}
}
bool check1(node a){
	if(a.job[0]!='B'||a.job[1]!='a'||a.job[2]!='n'||a.job[3]!='g'||a.job[4]!='Z'||a.job[5]!='h'||a.job[6]!='u'){
		return false;
	}
	return true;
}
bool check2(node a){
	if(a.job[0]!='F'||a.job[1]!='u'||a.job[2]!='B'||a.job[3]!='a'||a.job[4]!='n'||a.job[5]!='g'||a.job[6]!='Z'||a.job[7]!='h'||a.job[8]!='u'){
		return false;
	}
	return true;
}
int main(){
	scanf("%d",&n);
	for(int i=1; i<=n; i++){
		cin >> bang[i].name;
		for(int j=0; j<=30; j++){
			if(bang[i].name[j]!=0){
				bang[i].length1++;
			}
		}
		cin >> bang[i].job;
		if(check1(bang[i])) a=i;
		if(check2(bang[i])&&op==0) b=i,op=1;
		if(check2(bang[i])&&op==1) c=i;
		cin >> bang[i].bg;
		cin >> bang[i].dj;
	}
	swap(bang[1],bang[a]);
	swap(bang[2],bang[b]);
	swap(bang[3],bang[c]);
	sort(bang+4,bang+n+1,cmp);
	bang[1].job[1]='B';
	bang[1].job[2]='a';
	bang[1].job[3]='n';
	bang[1].job[4]='g';
	bang[1].job[5]='Z';
	bang[1].job[6]='h';
	bang[1].job[7]='u';
	bang[1].length=7;
	bang[1].zj=1;
	for(int i=2; i<=3; i++){
		bang[i].length=9;
		bang[i].job[1]='F';
		bang[i].job[2]='u';
		bang[i].job[3]='B';
		bang[i].job[4]='a';
		bang[i].job[5]='n';
		bang[i].job[6]='g';
		bang[i].job[7]='Z';
		bang[i].job[8]='h';
		bang[i].job[9]='u';
		bang[i].zj=2;
	}
	for(int i=4; i<=5; i++){
		bang[i].length=4;
		bang[i].job[1]='H';
		bang[i].job[2]='u';
		bang[i].job[3]='F';
		bang[i].job[4]='a';
		bang[i].zj=3;
	}
	for(int i=6; i<=9; i++){
		bang[i].job[1]='Z';
		bang[i].job[2]='h';
		bang[i].job[3]='a';
		bang[i].job[4]='n';
		bang[i].job[5]='g';
		bang[i].job[6]='L';
		bang[i].job[7]='a';
		bang[i].job[8]='o';
		bang[i].length=8;
		bang[i].zj=4;
	}
	for(int i=10; i<=16; i++){
		bang[i].job[1]='T';
		bang[i].job[2]='a';
		bang[i].job[3]='n';
		bang[i].job[4]='g';
		bang[i].job[5]='Z';
		bang[i].job[6]='h';
		bang[i].job[7]='u';
		bang[i].length=7;
		bang[i].zj=5;
	}
	for(int i=17; i<=41; i++){
		bang[i].job[1]='J';
		bang[i].job[2]='i';
		bang[i].job[3]='n';
		bang[i].job[4]='g';
		bang[i].job[5]='Y';
		bang[i].job[6]='i';
		bang[i].job[7]='n';
		bang[i].job[8]='g';
		bang[i].length=8;
		bang[i].zj=6;
	}
	for(int i=42; i<=n; i++){
		bang[i].job[1]='B';
		bang[i].job[2]='a';
		bang[i].job[3]='n';
		bang[i].job[4]='g';
		bang[i].job[5]='Z';
		bang[i].job[6]='h';
		bang[i].job[7]='o';
		bang[i].job[8]='n';
		bang[i].job[9]='g';
		bang[i].length=9;
		bang[i].zj=7;
	}
	sort(bang+1,bang+1+n,cmp1);
	for(int i=1; i<=n; i++){
		for(int j=0; j<bang[i].length1; j++){
			printf("%c",bang[i].name[j]);
		}
		printf(" ");
		for(int j=1; j<=bang[i].length; j++){
			printf("%c",bang[i].job[j]);
		}
		printf(" ");
		printf("%d\n",bang[i].dj);
	}
}
2021/2/28 17:14
加载中...