| 比赛 |
20251022赛前模拟1 |
评测结果 |
AAAAAAAAAA |
| 题目名称 |
解压缩 |
最终得分 |
100 |
| 用户昵称 |
梦那边的没好TM |
运行时间 |
0.030 s |
| 代码语言 |
C++ |
内存使用 |
3.74 MiB |
| 提交时间 |
2025-10-22 11:16:59 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define foru(a,b,c) for(ll a=b;a<=c;a++)
string s;
stack<pair<bool,ll> >bt;
ll btp[505],btc[505];
string et(ll u){
string ans="",outpt="";
ll tis=0;
foru(i,u+1,btp[u]-1){
if(s[i]>='0'&&s[i]<='9'){
tis=tis*10+s[i]-'0';
}else if(s[i]=='['){
ans=ans+et(i);
i=btp[i];
}else{
ans=ans+s[i];
}
}
foru(i,1,tis){
outpt=outpt+ans;
}
return outpt;
}
int main(){
freopen("extract.in","r",stdin);
freopen("extract.out","w",stdout);
cin>>s;
ll cnt=0;
foru(i,0,s.size()-1){
if(s[i]=='['){
bt.push({1,i});
cnt=0;
}else if(s[i]==']'){
ll tmp=bt.top().second;
bt.pop();
btp[tmp]=i;
btp[i]=tmp;
btc[i]=btc[tmp]=cnt;
cnt++;
}
}
foru(i,0,s.size()-1){
if(s[i]>='A'&&s[i]<='Z'){
cout<<s[i];
}else if(s[i]=='['){
cout<<et(i);
i=btp[i];
}
}
return 0;
}