Pagini recente » Romanii medaliati la IOI | Cod sursa (job #2093789) | Cod sursa (job #2909068) | Cod sursa (job #1632503) | Cod sursa (job #2074481)
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
ifstream fin("dir.in");
ofstream fout("dir.out");
int i,l,j,nrfold=0,nrcai=0;
char s[1610],fold[100][32],cai[105][257],backslash[3];
void wordsort(int st,int dr,char sir[105][257])
{
char m[257];
strcpy(m,sir[(st+dr)/2]);
int i=st,j=dr;
while(i<=j)
{
while(strcmp(sir[i],m)<0&&i<=dr) i++;
while(strcmp(m,sir[j])<0&&j>=st) j--;
char aux[105];
if(i<=j)
{
strcpy(aux,sir[i]);
strcpy(sir[i],sir[j]);
strcpy(sir[j],aux);
i++;j--;
}
}
if(i<dr)
wordsort(i,dr,sir);
if(j>st)
wordsort(st,j,sir);
}
int main()
{backslash[0]=92;
fin>>s;
l=strlen(s);
for(i=l-1;i>=0;i--)
s[i+2]=s[i];
s[0]='X';
s[1]='(';
l+=3;
s[l-1]=')';
for(i=0;i<=l-1;i++)
{ if(s[i]==')'){nrfold--;}
if(s[i]==',') i++;
if(s[i]>='A'&&s[i]<='Z')
{
j=1;
nrfold++;
while(s[j+i]!='(') j++;
strncpy(fold[nrfold],s+i,j);
fold[nrfold][j]='\0';
i+=j;
}
else
if(s[i]>='a'&&s[i]<='z')
{
nrcai++;
for(j=1;j<=nrfold;j++)
{
strcat(cai[nrcai],fold[j]);
strcat(cai[nrcai],backslash);
}
j=1;
while(s[j+i]!=')'&&s[j+i]!=',') j++;
strncat(cai[nrcai],s+i,j);
i+=j-1;
// cout<<cai[nrcai]<<endl;
}
}
//for(i=1;i<=nrcai;i++)
//fout<<cai[i]<<endl;
fout<<nrcai<<'\n';
// wordsort(1,nrcai,cai);
for(i=1;i<=nrcai;i++)
fout<<cai[i]+2<<'\n';
}