记录编号 200920 评测结果 AAAAAAAAAA
题目名称 [NOIP 2010冲刺十三]外星密码 最终得分 100
用户昵称 Gravatar神利·代目 是否通过 通过
代码语言 C++ 运行时间 0.003 s
提交时间 2015-10-29 18:46:43 内存使用 0.46 MiB
显示代码纯文本
#include<cstdio>
#include<iostream>
#include<string>
using namespace std;
int len,S[20100],id[20100];
string s,c[55];
inline void dfs(int deep,int l,int r)
{
	int num=1;
	if(s[l]<='9'&&s[l]>='0')
	{
		num=s[l]-48;
		++l;
		if(s[l]<='9'&&s[l]>='0')
		{
			num=(num<<3)+(num<<1)+s[l]-48;
			++l;
		}
	}
	c[deep].erase();
	string ss;
	int i=l;
	for(;i<=r;++i)
	{
		if(s[i]!='[')
			ss+=s[i];
		else
		{
			dfs(deep+1,i+1,id[i]-1);
			ss+=c[deep+1];
			i=id[i];
		}
	}
	while(num--)
	    c[deep]+=ss;
}
int main()
{
	freopen("passworda.in","r",stdin);
	freopen("passworda.out","w",stdout);
	cin>>s;
	len=s.size();
	for(int i=0;i<len;++i)
	{
	    if(s[i]=='[')
	        S[++S[0]]=i;
		if(s[i]==']')
		    id[S[S[0]--]]=i;
	}
	dfs(0,0,len-1);
	cout<<c[0];
	//while(1);
}