Cod sursă (job #376659)

Utilizator avatar mircearoata Mircea Roata Palade mircearoata IP ascuns
Problemă Bart (clasele 9-10) Compilator cpp | 0,91 kb
Rundă Arhiva de probleme Status evaluat
Dată 10 apr. 2018 18:34:20 Scor 30
#include <fstream>
#include <cstring>

using namespace std;

ifstream in("bart.in");
ofstream out("bart.out");

char ch[500001],ch1[500001],ch2[500001];

bool ok=false;
int l=1;

int main()
{
    in>>ch;
    while(true)
    {
        strncpy(ch1,ch,l);
        strncpy(ch2,ch+l,500000-l);
        while(strstr(ch2,ch1)-ch2!=0 && l<strlen(ch2))
        {
            l+=strstr(ch2,ch1)-ch2;
            strncpy(ch1,ch,l);
            strncpy(ch2,ch+l,500000-l);
        }
        if(l>=strlen(ch2))
        {
            out<<ch1;
            return 0;
        }
        int k=1;
        while(strstr(ch2,ch1)-ch2==0)
        {
            k++;
            if(k*l>strlen(ch))
                break;
            strncpy(ch2,ch+k*l,500000-k*l);
        }
        if(k==strlen(ch)/l)
        {
            out<<ch1;
            return 0;
        }
        l++;
    }
    return 0;
}