记录编号 200979 评测结果 AAAAAAAAAA
题目名称 [NOIP 2010冲刺十三]外星密码 最终得分 100
用户昵称 Gravatar炽烈的爱 是否通过 通过
代码语言 C++ 运行时间 0.003 s
提交时间 2015-10-29 19:40:48 内存使用 0.49 MiB
显示代码纯文本
#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
using namespace std;
int len,tot;
string s;
char ss[21000];
int a[21001],b[21001];
void dfs(int l,int r)
{
	int last=0;
	while(s[l]>=48&&s[l]<=57)
	    last=last*10+s[l]-'0',l++;
	int ll=tot,rr;
	string ch;
	for(int i=l;i<=r;++i)
		if(s[i]!=91)
		    ss[++tot]=s[i];
	    else
	    {
	        dfs(i+1,b[i]-1);
	        i=b[i];
		}
	rr=tot;
	for(int j=1;j<=last-1;++j)
		for(int k=ll+1;k<=rr;++k)
			ss[++tot]=ss[k];
}
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]=='[')
			a[++a[0]]=i;
		if(s[i]==']')
		    b[a[a[0]--]]=i;
	}
	for(int i=0;i<len;++i)
	{
		if(s[i]==91)
		{
			dfs(i+1,b[i]-1);
			i=b[i];
		}
		else
			ss[++tot]=s[i];
	}
	for(int i=1;i<=tot;++i)
		printf("%c",ss[i]);
	//while(1);
}