70pts,求调
查看原帖
70pts,求调
789564
queenbee楼主2024/6/18 10:42
#include<bits/stdc++.h>
using namespace std;
const int N=2e2+10;
int n;
int m;
int tot=1;
string s1;
string s[N];
bool text[N];
struct Node{
	string ch[N];
}f[N];
struct Order{
	bool ord;
	int pos;
}e[N];
void title(){
	for(int i=0;i<s1.length();i++){
		if(s1[i]==','){
			tot++;
			continue;
		}
		s[tot]+=s1[i];
	}
	return;
}
void content(int n){
	int tt=1;
	for(int i=0;i<s1.length();i++){
		if(s1[i]==','){
			tt++;
			continue;
		}
		f[n].ch[tt]+=s1[i];
		if(!(s1[i]>='0'&&s1[i]<='9')){
			text[tt]=1;
		}
	}
	return;
}
bool tmp(string a,string b,bool text){
	long long x=0,y=0;
	if(text){
		return a>b;
	}
	else{
		for(int i=0;i<a.length();i++){
			x=x*10+a[i]-'0';
		}
		for(int i=0;i<b.length();i++){
			y=y*10+b[i]-'0';
		}
		return x>y;
	}
}
bool cmp(Node a,Node b){
	for(int i=1;i<=m;i++){
		if(a.ch[e[i].pos]!=b.ch[e[i].pos]){
			if(e[i].ord){
				return !tmp(a.ch[e[i].pos],b.ch[e[i].pos],text[e[i].pos]);
			}
			else{
				return tmp(a.ch[e[i].pos],b.ch[e[i].pos],text[e[i].pos]);
			}
		}
	}
	return false;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>s1;
		if(i==1){
			title();
		}
		else{
			content(i-1);
		}
	}
	cin>>m;
	for(int i=1;i<=m;i++){
		cin>>s1;
		if(s1[s1.length()-1]=='+'){
			e[i].ord=1;
		}
		s1=s1.substr(0,s1.length()-1);
		for(int j=1;j<=tot;j++){
			if(s[j]==s1){
				e[i].pos=j;
				break;
			}
		}
	}
//	for(int i=1;i<n;i++){
//		for(int j=1;j<=tot;j++){
//			cout<<f[i].ch[j]<<" ";
//		}
//		cout<<endl;
//	}
	sort(f+1,f+n,cmp);
	for(int i=1;i<=tot;i++){
		if(i==tot){
			cout<<s[i]<<endl;
			break;
		}
		cout<<s[i]<<",";
	}
	for(int i=1;i<n;i++){
		for(int j=1;j<=tot;j++){
			if(j==tot){
				cout<<f[i].ch[j]<<endl;
				break;
			}
			cout<<f[i].ch[j]<<",";
		}
	}
	return 0;
} 
2024/6/18 10:42
加载中...