Cod sursa(job #2472424)

Utilizator uvIanisUrsu Ianis Vlad uvIanis Data 12 octombrie 2019 12:50:45
Problema Prefix Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <bits/stdc++.h>
#define MAX_LENGTH 1000001
using namespace std;

char sir[MAX_LENGTH];
size_t aux[MAX_LENGTH];

int main()
{
    ifstream fin("prefix.in");
    ofstream fout("prefix.out");

    size_t T;

    fin >> T;

    fin.get();  //sarim peste caracterul '\n' de pe prima linie dupa numarul T ????

    for(size_t t = 1; t <= T; ++t)
    {
        fin.getline(sir, MAX_LENGTH, '\n');


        for(size_t k = 0, i = 1; sir[i] != '\0'; ++i)
        {
            while(k > 0 && sir[i] != sir[k]) k = aux[k - 1];

            if(sir[i] == sir[k]) ++k;

            aux[i] = k;
        }

        size_t MAX = 0;

        for(size_t i = 1; sir[i] != '\0'; ++i)
        {
            if(aux[i] != 0 && aux[i] % (i + 1 - aux[i]) == 0) MAX = i + 1;
        }

        fout << MAX << '\n';
    }

}