可爱萌新不会模拟
  • 板块灌水区
  • 楼主_Deer_Peach_
  • 当前回复0
  • 已保存回复1
  • 发布时间2024/6/8 10:45
  • 上次更新2024/6/8 13:17:18
查看原帖
可爱萌新不会模拟
1040109
_Deer_Peach_楼主2024/6/8 10:45

rt

做法可能有点奇怪,样例过了但全Wa。

#include<bits/stdc++.h>
#define int long long
using namespace std;
struct node{
	string Name,p1,p2,p3,Score;
}ns[101];
bool Score(node x,node y){//分数升序排序
	return x.Score<y.Score;
}bool score(node x,node y){//分数降序排序
	return x.Score>y.Score;
}bool Name(node x,node y){//名字升序排序
	return x.Name<y.Name;
}bool name(node x,node y){//名字降序排序
	return x.Name>y.Name;
}bool P1(node x,node y){//p1升序排序
	return x.p1<y.p1;
}bool p1(node x,node y){//p1降序排序
	return x.p1>y.p1;
}bool p2(node x,node y){//p2降序排序
	return x.p2>y.p2;
}bool P2(node x,node y){//p2升序排序
	return x.p2<y.p2;
}bool P3(node x,node y){//p3升序排序
	return x.p3<y.p3;
}bool p3(node x,node y){//p3降序排序
	return x.p3>y.p3;
}
signed main(){
	int n,m;
	cin>>n;
	string s,a,b,c,d,e;//s是表格的标题行,a是第一个表目,b是第二个,c是第三个,d是第四个,e是第五个
	cin>>s;
	int len=s.size(),l=0;//len是长度,l是第几个
	string cnt="";
	s=s+",";
	for(int i=0;i<=len;i++){//处理a,b,c,d,e
		if(s[i]!=',')cnt+=s[i];
		else{
			l++;
			if(l==1)a=cnt;
			if(l==2)b=cnt;
			if(l==3)c=cnt;
			if(l==4)d=cnt;
			if(l==5)e=cnt;
			cnt="";
		}
	}for(int i=2;i<=n;i++){//处理输入
		string x;
		cin>>x;
		int Len=x.size();
		x=x+",";
		string y="";
		int k=0;
		for(int j=0;j<=Len;j++){
			if(x[j]!=',')y+=x[j];
			else{
				k++;
				if(k==1){
					if(a=="Name")ns[i].Name=y;
					if(a=="p1")ns[i].p1=y;
					if(a=="p2")ns[i].p2=y;
					if(a=="p3")ns[i].p3=y;
					if(a=="Score")ns[i].Score=y;
				}if(k==2){
					if(b=="Name")ns[i].Name=y;
					if(b=="p1")ns[i].p1=y;
					if(b=="p2")ns[i].p2=y;
					if(b=="p3")ns[i].p3=y;
					if(b=="Score")ns[i].Score=y;
				}if(k==3){
					if(c=="Name")ns[i].Name=y;
					if(c=="p1")ns[i].p1=y;
					if(c=="p2")ns[i].p2=y;
					if(c=="p3")ns[i].p3=y;
					if(c=="Score")ns[i].Score=y;
				}if(k==4){
					if(d=="Name")ns[i].Name=y;
					if(d=="p1")ns[i].p1=y;
					if(d=="p2")ns[i].p2=y;
					if(d=="p3")ns[i].p3=y;
					if(d=="Score")ns[i].Score=y;
				}if(k==5){
					if(e=="Name")ns[i].Name=y;
					if(e=="p1")ns[i].p1=y;
					if(e=="p2")ns[i].p2=y;
					if(e=="p3")ns[i].p3=y;
					if(e=="Score")ns[i].Score=y;			
				}y="";
			}
		}
	}cin>>m;
	for(int i=1;i<=m;i++){//处理排序
		string op;
		cin>>op;
		if(op[0]=='S'){
			if(op[5]=='+'){
				sort(ns+2,ns+n+1,Score);
			}else sort(ns+2,ns+n+1,score);
		}if(op[0]=='N'){
			if(op[4]=='+'){
				sort(ns+2,ns+n+1,Name);
			}else sort(ns+2,ns+n+1,name);
		}if(op[0]=='p'){
			if(op[1]=='1'){
				if(op[2]=='+'){
					sort(ns+2,ns+n+1,P1);
				}else sort(ns+2,ns+n+1,p1);
			}if(op[1]=='2'){
				if(op[2]=='+'){
					sort(ns+2,ns+n+1,P2);
				}else sort(ns+2,ns+n+1,p2);
			}if(op[1]=='3'){
				if(op[2]=='+'){
					sort(ns+2,ns+n+1,P3);
				}else sort(ns+2,ns+n+1,p3);
			}
		}
	}for(int i=0;i<len;i++)cout<<s[i];//输出标题行
	cout<<endl;
	for(int i=2;i<=n;i++){//处理输出
		if(a=="Name")cout<<ns[i].Name<<",";
		if(a=="p1")cout<<ns[i].p1<<",";
		if(a=="p2")cout<<ns[i].p2<<",";
		if(a=="p3")cout<<ns[i].p3<<",";
		if(a=="Score")cout<<ns[i].Score<<",";
		if(b=="Name")cout<<ns[i].Name<<",";
		if(b=="p1")cout<<ns[i].p1<<",";
		if(b=="p2")cout<<ns[i].p2<<",";
		if(b=="p3")cout<<ns[i].p3<<",";
		if(b=="Score")cout<<ns[i].Score<<",";
		if(c=="Name")cout<<ns[i].Name<<",";
		if(c=="p1")cout<<ns[i].p1<<",";
		if(c=="p2")cout<<ns[i].p2<<",";
		if(c=="p3")cout<<ns[i].p3<<",";
		if(c=="Score")cout<<ns[i].Score<<",";
		if(d=="Name")cout<<ns[i].Name<<",";
		if(d=="p1")cout<<ns[i].p1<<",";
		if(d=="p2")cout<<ns[i].p2<<",";
		if(d=="p3")cout<<ns[i].p3<<",";
		if(d=="Score")cout<<ns[i].Score<<",";
		if(e=="Name")cout<<ns[i].Name<<endl;
		if(e=="p1")cout<<ns[i].p1<<endl;
		if(e=="p2")cout<<ns[i].p2<<endl;
		if(e=="p3")cout<<ns[i].p3<<endl;
		if(e=="Score")cout<<ns[i].Score<<endl;
	}return 0;
}
2024/6/8 10:45
加载中...