比赛 20121030 评测结果 AAAAAAAAAA
题目名称 外星密码 最终得分 100
用户昵称 Makazeu 运行时间 0.004 s
代码语言 C++ 内存使用 3.15 MiB
提交时间 2012-10-30 20:11:07
显示代码纯文本
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <stack>
#include <cctype>
#include <algorithm>
#include <iostream>
using namespace std;
string str;

inline string delenter(string a)
{
	for(unsigned int i=0;i<a.length();i++)
		if(a[i]==10 || a[i]==13) return a.substr(0,i);
	return a;
}

string deal(int s,int e)
{
	int num=0,pos,tmppos=e+1;
	string tmp="";stack<int> poses;
	for(int i=s;i<=e;i++)
	{
		if(!isdigit(str[i])) {pos=i;break;}
		num=num*10+str[i]-'0';
	}
	for(int i=pos;i<=e;i++)
	{
		if(str[i]!='['&&str[i]!=']'&&poses.empty()) {tmp.push_back(str[i]);continue;}
		if(str[i]=='[') {poses.push(i);continue;}
		if(str[i]==']') 
		{
			tmppos=poses.top();poses.pop();
			if(poses.empty())  tmp+=deal(tmppos+1,i-1);
		}
	}
	string now="";
	for(int i=1;i<=num;i++)
		now+=tmp;
	return now;
}

int main()
{
	freopen("passworda.in","r",stdin);
	freopen("passworda.out","w",stdout);
	//getline(cin,str); str=delenter(str);
	cin>>str;
	str="[1"+str+']';
	cout<<deal(1,str.length()-2)<<endl;
	return 0; 
}