记录编号 47192 评测结果 AWAAAWEAEA
题目名称 [NOIP 2010冲刺十三]外星密码 最终得分 60
用户昵称 GravatarCloud 是否通过 未通过
代码语言 C++ 运行时间 0.148 s
提交时间 2012-10-31 10:08:25 内存使用 3.15 MiB
显示代码纯文本
#include<fstream>
#include<cstring>
#include<stack>
using namespace std;
int main(void)
{
	ifstream fin("passworda.in");
	ofstream fout("passworda.out");
	string st;
	char ans[20000],s[20000];
	fin>>st;
	int i,j=0,k=0;
	int p,q;
	bool f=0;
	int num;
	stack<int> sk;
	for(i=0;i<st.size();i++)
	{
		if(st[i]>='A'&&st[i]<='Z')
		{
			if(f)
			{
				s[j]=st[i];
				j++;
			}
			else
			{
				ans[k]=st[i];
				k++;
			}
		}
		if(st[i]=='[')
		{
			sk.push(-1);
			f=1;
		}
		if(st[i]>='0'&&st[i]<='9')
		{
			num=st[i]-'0';
			for(p=i;p<=st.size();p++)
			{
				if(st[p+1]>='0'&&st[p+1]<='9')
				{
					num=num*10+(st[p+1]-'0');
					i++;
				}
				else
					break;
			}
			sk.push(num);
		}
		if(st[i]==']')
		{
			num=sk.top();
			if(num>=0)
			{
				sk.pop();			
				for(p=1;p<num;p++)
					for(q=0;q<j;q++)
						s[p*j+q]=s[q];
				j=p*j;
			}
			sk.pop();
			if(sk.empty())
			{
				for(p=0;p<j;p++,k++)
					ans[k]=s[p];
				f=0;
				j=0;
			}
		}
	}
	for(i=0;i<k;i++)
		fout<<ans[i];
	fin.close();
	fout.close();
	return 0;
}