比赛 20251022赛前模拟1 评测结果 AAAAAAAAAA
题目名称 解压缩 最终得分 100
用户昵称 梧叶已同秋雨去 运行时间 0.037 s
代码语言 C++ 内存使用 3.71 MiB
提交时间 2025-10-22 11:19:07
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
char a[505];
int n=1,cnt,t[505];
int id[505];
void cu(int k,int l,int r){
	while(k--){
		for(int i=l;i<=r;i++){
			if(a[i]>='A'&&a[i]<='Z'){
				cout<<a[i];continue;
			}
			if(a[i]=='['){
				int l;
				int r=id[i];
				int sum=0;i++;
				while(a[i]>='0'&&a[i]<='9'){
					sum*=10;
					sum+=a[i]-'0';
					i++;
				}
				l=i;
				cu(sum,l,r-1);
				i=r;
			}
		}	
	}
}
int main(){
	freopen("extract.in","r",stdin);
	freopen("extract.out","w",stdout);
	string s;
	cin>>s;
	n=s.size();
	for(int i=0;i<n;i++){
		a[i+1]=s[i];
	} 
	for(int i=1;i<=n;i++){
		if(a[i]=='['){
			cnt++;
			t[cnt]=i;
		}
		if(a[i]==']'){
			id[t[cnt]]=i;
			cnt--;
		}
	}
	for(int i=1;i<=n;i++){
		if(a[i]>='A'&&a[i]<='Z'){
			cout<<a[i];continue;
		}
		if(a[i]=='['){
			int l;
			int r=id[i];
			int sum=0;i++;
			while(a[i]>='0'&&a[i]<='9'){
				sum*=10;
				sum+=a[i]-'0';
				i++;
			}
			l=i;
			cu(sum,l,r-1);
			i=r;
		}
	}
	return 0;
}