Cod sursa(job #145192)

Utilizator bogdanhm999Casu-Pop Bogdan bogdanhm999 Data 28 februarie 2008 16:14:30
Problema Lampa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.87 kb
#include <stdio.h>
#include <string.h>

long n,m,i,j,k,ok,f[27],nra,nrb,r,l,cc,poz;
char ch[3028000],sol1[100000],sol2[100000],cuv1[100000],cuv2[100000];
char c1[100000],c2[100000],c3[100000];

int main(){
    freopen("lampa.in","r",stdin);
    freopen("lampa.out","w",stdout);
    
    scanf("%ld %ld\n",&n,&m);
    scanf("%s",ch);
    
    f[1]=1;
    f[2]=1;
    strcpy(c1,"1");
    strcpy(c2,"2");
    for (i=3;i<=n;i++){
        f[i]=f[i-1]+f[i-2];
        strcpy(c3,c1);
        strcat(c3,c2);
        strcpy(c1,c2);
        strcpy(c2,c3);
    }
    /*
    nra=f[n-2];
    nrb=f[n-1];
    for (i=1;i<=m/nra;i++){
        r=m-nra*i;
        if (r%nrb==0){
           j=r/nrb;
           if (!j)continue;
           if (n%2==1){
              for (k=0;k<i;k++)
                  cuv1[k]=ch[k];
              cuv1[i]=0;
              for (k=i;k<i+j;k++)
                  cuv2[k-i]=ch[k];
              cuv2[j]=0;
              l=strlen(c2);
              cc=1;
              poz=0;
              for (k=0;k<l;k++)
                  if (c2[k]=='1'){
                    // poz=nr1*i+nr2*j;
                     
                     for (r=poz;r<poz+i;r++)
                         if (ch[r]!=cuv1[r-poz]){cc=0;break;}
                     if (!cc)break;
                     poz+=i;
                  }
                  else{
                      // poz=nr1*i+nr2*j;
                       
                       for (r=poz;r<poz+j;r++)
                           if (ch[r]!=cuv2[r-poz]){cc=0;break;}
                       if (!cc)break;
                       poz+=j;
                  }
              if (!cc)continue;
           }
           else{
                for (k=0;k<j;k++)
                    cuv1[k]=ch[k];
                cuv1[j]=0;
                for (k=j;k<i+j;k++)
                    cuv2[k-j]=ch[k];
                cuv2[i]=0;
                l=strlen(c2);
                
              poz=0;  
              cc=1;
              for (k=0;k<l;k++)
                  if (c2[k]=='1'){
                     for (r=poz;r<poz+j;r++)
                         if (ch[r]!=cuv1[r-poz]){cc=0;break;}
                     if (!cc)break;
                     poz+=j;
                  }
                  else{
                       for (r=poz;r<poz+i;r++)
                           if (ch[r]!=cuv2[r-poz]){cc=0;break;}
                       if (!cc)break;
                       poz+=i;
                  }
              if (!cc)continue;
           }
           if (ok==0){
              strcpy(sol1,cuv1);
              strcpy(sol2,cuv2);
              ok=1;
           }
           else
                if (strcmp(sol1,cuv1)>0){
                   strcpy(sol1,cuv1);
                   strcpy(sol2,cuv2);
                }
        }
    }
    printf("%s\n",sol1);
    printf("%s\n",sol2);
 */
return 0;
}