比赛 20241022 评测结果 AAAAAAAAAA
题目名称 解压缩 最终得分 100
用户昵称 flyfree 运行时间 0.039 s
代码语言 C++ 内存使用 3.34 MiB
提交时间 2024-10-22 11:05:25
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define MAXN 2010
#define inf 1000000000
inline ll read(){
	ll x=0,f=1;
	char c=getchar();
	while(c<'0'||c>'9'){
		if(c=='-')f=-1;
		c=getchar();
	}
	while(c>='0'&&c<='9'){
		x=x*10+c-'0';
		c=getchar();
	}
	return x*f;
}
struct node{
	ll cnt,l,r;
};
string c;
void work(ll l,ll r){
//	cout<<l<<" "<<r<<endl;
	stack<node> st;
	ll pd=0;
	for(ll i=l;i<=r;i++){
		if(c[i]=='['){
			if(pd)st.top().l=min(st.top().l,i);
			st.push((node){0,inf,0});
			pd=1;
		}else if(c[i]==']'){
			st.top().r=i-1;
			for(int j=1;j<st.top().cnt;j++)work(st.top().l,st.top().r);
			st.pop();
			if(st.empty())pd=0;
		}else if(c[i]>='0'&&c[i]<='9')st.top().cnt=st.top().cnt*10+c[i]-'0';
		else{
			if(pd)st.top().l=min(st.top().l,i);
			cout<<c[i];
		}
	}
//	if(!pd)for(int i=k;i<=r;i++)cout<<s[i]
}
int main(){
	freopen("extract.in","r",stdin);
	freopen("extract.out","w",stdout);
	cin>>c;
	ll len=c.length();
	c="0"+c;
	work(1,len);
	return 0;
}