Pagini recente » Borderou de evaluare (job #2369377) | Cod sursa (job #2370470)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("teatru.in");
ofstream fout("teatru.out");
int i,j,ls,ls2,nr;
char s[15][4100],cer;
void repar(int linie,int st,int lun){
int j;
if(lun==1){
s[linie-1][st]=s[linie][st];
return;
}
repar(linie+1,st,lun/2);
repar(linie+1,st+lun/2,lun/2);
for(int i=st,j=st-1;i<=st+lun-1;i++){
s[linie-1][++j]=s[linie][i];
s[linie-1][++j]=s[linie][i+lun/2];
}
}
void impart(int st,int linie,int lun){
if(lun==0)
return;
for(i=st,j=st;i<=st+lun;i+=2,j++)
s[linie+1][j]=s[linie][i];
for(i=st+1,j=st+lun/2;i<=st+lun;i+=2,j++)
s[linie+1][j]=s[linie][i];
impart(st,linie+1,lun/2);
impart(st+lun/2,linie+1,lun/2);
}
int main(){
fin>>cer;
if(cer=='C'){
fin>>(s[1]+1);
ls=strlen(s[1]+1);
ls2=ls;
while(ls2>1){
nr++;
ls2>>=1;
}
impart(1,1,ls);
fout<<(s[nr]+1);
return 0;
}
fin>>(s[0]+1);
ls=strlen(s[0]+1);
ls2=ls;
while(ls2>1){
nr++;
ls2>>=1;
}
strcpy(s[nr],s[0]);
cout<<(s[nr]+1);
repar(1,1,ls);
cout<<2;
fout<<s[nr];
}