AC code:
#include <cstdio>
#include <queue>
#include <iostream>
using namespace std;
int main()
{
char s[202];
char c;
// int cnt1=0,cnt2=0;//cnt1、cnt2分别记录字母和@的个数
queue <int> pos;//记录出现@处的下标
bool OK=1;//判断是否能还原
int len,i,j;
for(len=0,i=0;scanf("%c",&c)!=EOF;len++)
{//cout<<1;
if(c=='\n' || c=='\r')
{
s[len]='\0';
break;
}
else if(c=='@')
{
//两个@间距不足两位,注意要在pos不为空时才执行。
if(!pos.empty() && len-pos.back()<3)
{//cout<<"*";
OK=0;
while(scanf("%c",&c) && !(c=='\n' || c=='\r')){}
break;
}
s[len]=c;
pos.push(len);
}
else
{
s[len]=c;
//cnt1++;
}
}
if(OK)
{
//如果不存在@ or 不存在字母 or 首字符是@ or 末字符是@
if(pos.empty() || !(len-pos.size()) || s[len-1]=='@' || s[0]=='@')
{
OK=0;
}
else
for(i=0;s[i]!='\0';)
{
if(pos.size()>1)
{
for(;i<pos.front()+2;i++)
cout<<s[i];
cout<<",";
pos.pop();
}
else
{
for(;s[i]!='\0';i++)
cout<<s[i];
cout<<endl;
}
}
}
if(!OK) cout<<"No solution"<<endl;
return 0;
}