90pts,求调
查看原帖
90pts,求调
734065
oya157楼主2024/8/3 15:23
#include<bits/stdc++.h>
using namespace std;
int n,cnt=1;
string t;
string s[1005];
struct node{
	string sp;
	string a[1005];
	int b[1005];
	int cntp;
	int idx;
}per[1005];

int m;
char ccmp[1005];

struct qwecmp{
	string type;
	int idxxx;
}cmpcmp[1005];
bool cmp(node x,node y){
	for(int i=1;i<=m;i++){
		if(x.a[cmpcmp[i].idxxx]!=""){
			if(x.a[cmpcmp[i].idxxx]==y.a[cmpcmp[i].idxxx]) continue;
			else if(ccmp[cmpcmp[i].idxxx]=='-') return x.a[cmpcmp[i].idxxx]>y.a[cmpcmp[i].idxxx];
			else return x.a[cmpcmp[i].idxxx]<y.a[cmpcmp[i].idxxx];
		}else{
			if(x.b[cmpcmp[i].idxxx]==y.b[cmpcmp[i].idxxx]) continue;
			else if(ccmp[cmpcmp[i].idxxx]=='-') return x.b[cmpcmp[i].idxxx]>y.b[cmpcmp[i].idxxx];
			else return x.b[cmpcmp[i].idxxx]<y.b[cmpcmp[i].idxxx];
		}
	}
	return x.idx<y.idx;
}
int main(){
	cin>>n>>t;
	for(int i=0;i<t.size();i++){
		if(t[i]==',') cnt++;
		else s[cnt]+=t[i];
	}
	for(int i=1;i<n;i++){
		cin>>per[i].sp;
		per[i].cntp=1,per[i].idx=i;
		for(int j=0;j<per[i].sp.size();j++){
			if(per[i].sp[j]==',') per[i].cntp++;
			else if('0'<=per[i].sp[j]&&per[i].sp[j]<='9') per[i].b[per[i].cntp]=per[i].b[per[i].cntp]*10+per[i].sp[j]-'0';
			else per[i].a[per[i].cntp]+=per[i].sp[j];
		}
	}
	cin>>m;
	for(int i=1;i<=m;i++){
		cin>>cmpcmp[i].type;
		for(int j=1;j<=cnt;j++)
			if(s[j]==cmpcmp[i].type.substr(0,cmpcmp[i].type.size()-1))
				ccmp[j]=cmpcmp[i].type[cmpcmp[i].type.size()-1],cmpcmp[i].idxxx=j;
	}
	sort(per+1,per+n,cmp);
	cout<<t<<endl;
	for(int i=1;i<n;i++)
		cout<<per[i].sp<<endl;
	return 0;
}
2024/8/3 15:23
加载中...