Cod sursa(job #2734918)

Utilizator PredescuSebastianIonPredescu Sebastian Ion PredescuSebastianIon Data 1 aprilie 2021 17:02:49
Problema Lampa Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <fstream>
#include <string>

using namespace std;
ifstream f("lampa.in");
ofstream g("lampa.out");
int m,n,mat[2][30];
string s,aux,a,b;
int solve(int nr0,int nr1)
{
    a.clear();
    b.clear();
    int p0=0,p1=0;
    if(n%2==0)p0=nr1;
    else p1=nr0;
    a=s.substr(p0,nr0);
    b=s.substr(p1,nr1);
    int p=0;
    for(int poz=0; poz<aux.length(); poz++)
    {
        if(aux[poz]=='0')
        {
            if(s.compare(p,nr0,a,0,nr0)!=0)return 0;
            p+=nr0;
        }
        else
        {
            if(s.compare(p,nr1,b,0,nr1)!=0)return 0;
            p+=nr1;
        }
    }
    return 1;
}
int main()
{
    f>>n>>m>>s;
    mat[0][1]=mat[1][2]=1;
    for(int i=3; i<=n; i++)
    {
        mat[0][i]=mat[0][i-1]+mat[0][i-2];
        mat[1][i]=mat[1][i-1]+mat[1][i-2];
    }
    a='0';
    b='1';
    for(int i=3; i<=n; i++)
    {
        aux=a+b;
        a=b;
        b=aux;
    }
    for(int lg2=m/mat[1][n]; lg2>=1; lg2--)
    {
        int lg1=(m-lg2*mat[1][n])/mat[0][n];
        if(mat[1][n]*lg2+mat[0][n]*lg1==m && solve(lg1,lg2)==1)
        {
            g<<a<<"\n"<<b<<"\n";
            return 0;
        }
    }
    g<<"0\n";
    return 0;
}