#include<bits/stdc++.h>
using namespace std;
int n;
string s;
string ans[10005];
stack<int> k;
signed main()
{
bool quote=0;
string url="",img="";
while(getline(cin,s))
{
n++;
for(int i=0;i<s.size();i++)
{
if(s[i]=='[')
{
int j=i+1;
for(;j<s.size();j++)
if(s[j]==']')
break;
bool ctn=1;
if(s.substr(i,4)=="[h1]")
k.push(1),ans[n]+="# ",i=j;
else if(s.substr(i,5)=="[/h1]")
{
if(k.empty() || k.top()!=1)
return !puts("Match Error");
if(k.top()==1)
k.pop();
ans[n]+=" #",i=j;
}
else if(s.substr(i,4)=="[h2]")
k.push(2),ans[n]+="## ",i=j;
else if(s.substr(i,5)=="[/h2]")
{
if(k.empty() || k.top()!=2)
return !puts("Match Error");
if(k.top()==2)
k.pop();
ans[n]+=" ##",i=j;
}
else if(s.substr(i,3)=="[i]")
k.push(3),ans[n]+="*",i=j;
else if(s.substr(i,4)=="[/i]")
{
if(k.empty() || k.top()!=3)
return !puts("Match Error");
if(k.top()==3)
k.pop();
ans[n]+="*",i=j;
}
else if(s.substr(i,3)=="[b]")
k.push(4),ans[n]+="__",i=j;
else if(s.substr(i,4)=="[/b]")
{
if(k.empty() || k.top()!=4)
return !puts("Match Error");
if(k.top()==4)
k.pop();
ans[n]+="__",i=j;
}
else if(s.substr(i,5)=="[url=")
{
url=s.substr(i+5,j-i-5);
k.push(5),ans[n]+="[",i=j;
}
else if(s.substr(i,6)=="[/url]")
{
if(k.empty() || k.top()!=5)
return !puts("Match Error");
if(k.top()==5)
k.pop();
ans[n]+="](";
ans[n]+=url;
url="";
ans[n]+=")";
i=j;
}
else if(s.substr(i,5)=="[img=")
{
img=s.substr(i+5,j-i-5);
k.push(6),ans[n]+="![",i=j;
}
else if(s.substr(i,6)=="[/img]")
{
if(k.empty() || k.top()!=6)
return !puts("Match Error");
if(k.top()==6)
k.pop();
ans[n]+="](";
ans[n]+=img;
img="";
ans[n]+=")";
i=j;
}
else if(s.substr(i,7)=="[quote]" && !quote)
k.push(7),quote=1,n++,i=j,ans[n]="> "+ans[n];
else if(s.substr(i,8)=="[/quote]")
{
if(k.empty() || k.top()!=7)
return !puts("Match Error");
if(k.top()==7)
k.pop();
quote=0,n++,i=j;
}
else
ctn=0;
if(ctn)
continue;
}
ans[n]+=s[i];
}
if(quote && !(ans[n][0]=='>' && ans[n][1]==' '))
ans[n]="> "+ans[n];
// if(n==20)
// break;
}
if(!k.empty())
{
printf("Unclo");
return !puts("sed Mark");
}
for(int i=1;i<=n;i++)
{
if(ans[i]=="> " || ans[i]=="")
continue;
cout<<ans[i]<<'\n';
}
return 0;
}
看不懂的地方问我qwq
测试点一直显示read )
expected /