Cod sursa(job #1744642)

Utilizator fanache99Constantin-Buliga Stefan fanache99 Data 20 august 2016 01:59:55
Problema Lampa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.67 kb
#include <fstream>
#include <string>
#include <cstring>
#include <algorithm>

using namespace std;


ifstream cin("lampa.in");
ofstream cout("lampa.out");

char s[3100000];
string A, B, C;
int n, m, a, b;

void Check(int a, int b) {
    int i, k = a + b;
    for (i = 2; i < A.size(); i++)
        if (A[0] == '1')
            if (A[i] == '1')
                if (memcmp(s, s + k, a))
                    return;
                else
                    k += a;
            else
                if (memcmp(s + a, s + k, b))
                    return;
                else
                    k += b;
        else
            if(A[i]=='1')
                if (memcmp(s + b, s + k, a))
                    return;
                else
                    k += a;
            else
                if (memcmp(s, s + k, b))
                    return;
                else
                    k += b;
    if (A[0] == '1'){
        for (i = 0; i < a; i++)
            cout << s[i];
        cout << "\n";
        for (i = a; i < a + b; i++)
            cout << s[i];
    }
    else{
        for (i = b; i < a + b; i++)
            cout << s[i];
        cout << "\n";
        for (i = 0; i < b; i++)
            cout << s[i];
    }
    exit(0);
}

int main() {
    int i;
    cin >> n >> m;
    cin >> s;
    a = 1;
    b = 0;
    A = "1";
    B = "2";
    for (i = 1; i < n; i++) {
        if (i != n - 1)
            C = A + B;
        A = B;
        B = C;
        b += a;
        a = b - a;
    }
    for(i = 1; i < m / a + 1; i++)
        if ((m - i * a) % b == 0)
            Check(i, (m - i * a) / b);
    cout << "0";
    return 0;
}