Cod sursa(job #2370470)

Utilizator denmirceaBrasoveanu Mircea denmircea Data 6 martie 2019 12:18:30
Problema A+B Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#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];
}