比赛 |
20121030 |
评测结果 |
AAAAAAAAAA |
题目名称 |
外星密码 |
最终得分 |
100 |
用户昵称 |
临轩听雨ゐ |
运行时间 |
0.008 s |
代码语言 |
C++ |
内存使用 |
4.60 MiB |
提交时间 |
2012-10-30 20:17:45 |
显示代码纯文本
#include <fstream>
#include <cstring>
#include <cstdlib>
#include <string>
#include <cstdio>
using namespace std;
ifstream in("passworda.in");
ofstream out("passworda.out");
int n,m;
int a[200010]={0},p[100010]={0};
char s[200010];
void d(int le,int ri)
{
int num=1,str=le;
if (s[le]>='0'&&s[le]<='9')
{
num=s[le]-'0';
str=le+1;
if (s[le+1]>='0'&&s[le+1]<='9')
{
num=num*10+s[le+1]-'0';
str=le+2;
}
}
for (int i=1;i<=num;i++)
for (int j=str;j<=ri;j++)
{
if (s[j]!='['&&s[j]!=']')
out<<s[j];
else
if (s[j]=='[')
{
int k=a[j];
d(j+1,k-1);
j=k-1;
}
}
}
int main()
{
in>>s;
n=strlen(s)-1;
int num=0;
for (int i=0;i<=n;i++)
{
if (s[i]=='[')
{
num++;
p[num]=i;
}
if (s[i]==']')
{
a[p[num]]=i;
num--;
}
}
d(0,strlen(s)-1);
return 0;
}