记录编号 |
200920 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2010冲刺十三]外星密码 |
最终得分 |
100 |
用户昵称 |
神利·代目 |
是否通过 |
通过 |
代码语言 |
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);
}