比赛 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;
}