TLE求助
查看原帖
TLE求助
711871
fanyuchen2010楼主2022/8/31 17:18

TLE求助

#include<bits/stdc++.h>
using namespace std;
struct node{
	int id;
	string s;
}mp[10000];
int n;
int root;
bool cmp(node A,node B){
	if(A.s.size()==B.s.size()){
		return A.s<B.s;
	}
	return A.s.size()<B.s.size();
}
bool chk1();
bool chk2();
int main(){
	int qwqwqw=0;
	while(1){
		if(qwqwqw){
			printf("\n");
		}
		qwqwqw++;
		string ss;
		n=0;
		root=0;
		bool qwerty=1;
		while(cin>>ss){
			if(ss=="()"){
				break;
			}
			else{
				n++;
				int cnt=0;
				for(int i=1;i<ss.find(',');i++){
					cnt=cnt*10+(ss[i]-'0');
				}
				mp[n].id=cnt;
				if(ss.find(')')-ss.find(',')==1){
					root=mp[n].id;
					mp[n].s="";
					qwerty=0;
				}
				else{
					string qwe="";
					for(int i=ss.find(',')+1;i<ss.find(')');i++){
						qwe+=ss[i];
					}
					mp[n].s=qwe;
				}
			}
		} 
		if(chk1()||chk2()||qwerty){
			printf("not complete");
		}
		else{
			sort(mp+1,mp+1+n,cmp);
			for(int i=1;i<=n;i++){
				cout<<mp[i].id;
				if(i!=n){
					printf(" ");
				}
			}
		}
	}
	return 0;
} 
bool chk1(int m){
	for(int i=2;i<=n;i++){
		if(mp[i].s==mp[i-1].s){
			return 1;
		}
	}
	return 0;
}
bool chk2(int m){
	set<string>st;
	for(int i=1;i<=n;i++){
		st.insert(mp[i].s);
	}
	for(int i=2;i<=n;i++){
		if(!st.count(mp[i].s.substr(0,mp[i].s.size()-2))){
			return 1;
		}
	}
	return 0;
}
2022/8/31 17:18
加载中...