Cod sursa(job #258152)

Utilizator mihaipoascaPoasca Mihai mihaipoasca Data 14 februarie 2009 19:50:52
Problema Lampa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.9 kb
#include<fstream>
#include<string.h>
#define max(a,b) (a>b?a:b)
#define MAX 1010900
using namespace std;

ifstream fin("lampa.in");
ofstream fout("lampa.out");

int N,M,fa,fb;
char cuv[MAX];

int valid(char A[],char B[]){

    for(int i=3;i<=N;i++){
        char aux[max(strlen(A),strlen(B))];
        strcpy(aux,A);
        strcpy(A,B);
        strcpy(B,aux);
        strcat(B,A);
    }
    if(strcmp(B,cuv)==0)
        return 1;
    return 0;

}

int main(){
    fin>>N>>M>>cuv;
    fa=fb=1;
    for(int i=1;i<N-2;i++){
        int aux;
        aux=fa;
        fa=fb;
        fb+=aux;
    }
/*
    int ok=0;
    for(int la=1;la<=(M-fb)/fa&&ok==0;la++){
        int lb=(M-la*fa)/fb;
        if(M==la*fa+lb*fb){
            char A[la],B[lb];
            if(N%2){
                for(int i=0;i<la;i++)
                    A[i]=cuv[i];
                for(int i=0;i<lb;i++)
                    B[i]=cuv[i+la];
                B[lb]=0;A[la]=0;
            }
            else{
                for(int i=0;i<lb;i++)
                    B[i]=cuv[i];
                for(int i=0;i<la;i++)
                    A[i]=cuv[i+lb];
                A[la]=0;B[lb]=0;
            }


            if(valid(A,B)){
                if(N%2){
                    for(int i=0;i<la;i++)
                        A[i]=cuv[i];
                    for(int i=0;i<lb;i++)
                        B[i]=cuv[i+la];
                    B[lb]=0;A[la]=0;
                }
                else{
                    for(int i=0;i<lb;i++)
                        B[i]=cuv[i];
                    for(int i=0;i<la;i++)
                        A[i]=cuv[i+lb];
                    A[la]=0;B[lb]=0;
                }
                ok=1;
                fout<<A<<"\n"<<B<<"\n";
            }
        }
    }
*/
    if(ok==0)
        fout<<0<<"\n";
    fin.close();
    fout.close();
    return 0;
}