【悬关】求助,0pts
查看原帖
【悬关】求助,0pts
475532
Alexandr楼主2023/12/22 22:20
#include<bits/stdc++.h>
#define _rep(i,a,b) for(int i=(a);i<=(b);i++)
#define _antirep(i,a,b) for(int i=(a);i>=(b);i--)
using namespace std;
typedef long long LL;
typedef double db;
const int N=266; 
int cnt;
string s; 
map<string,bool>Map;
struct node
{
	int x;
	string p;
}t[N];
bool cmp(node fir,node sed)
{	
	if(fir.p.size()!=sed.p.size()) return fir.p.size()<sed.p.size();
	return fir.p<sed.p;
}
int to_number(string pp)
{
	int res=0;
	for(int i=0;i<pp.size();++i) res=(res*10)+(pp[i]-'0');
	return res;
}
int main()
{
	cin.tie(0)->sync_with_stdio(0);
	while(cin>>s)
	{ 
		if(s=="()")
		{
			sort(t+1,t+cnt+1,cmp);
			bool ok=true;
			if(t[1].p!="") ok=false;
			Map.clear();
			Map[""]=1;
			_rep(i,2,cnt)
			{
				if(!Map[t[i].p.substr(0,t[i].p.size()-1)]) ok=false;
				Map[t[i].p]=1;
			}
			if(!ok) cout<<"not complete";
			else _rep(i,1,cnt) cout<<t[i].x<<" ";
			cout<<endl;  
			cnt=0;
		}
		else
		{
			++cnt;
			int l,r;
			l=s.find("(")+1; r=s.find(",")-1;
 			t[cnt].x=to_number(s.substr(l,r-l+1)); 
			l=r+2,r=s.find(")")-1;
			t[cnt].p=s.substr(l,(r-l+1)); 
		}
	}
	return 0;
}
2023/12/22 22:20
加载中...