Cod sursa(job #1457747)

Utilizator DrumeaVDrumea Vasile DrumeaV Data 4 iulie 2015 13:57:14
Problema Prefix Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <fstream>
#include <string.h>
using namespace std;

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

const int Dim = 1000001;

int T,P[Dim],Sol;
char S[Dim];

int main()
{
    fin >> T;

    fin.get();

    while(T--)
    {
        fin.get(S,Dim);
        fin.get();
        P[0] = 0;
        Sol = 0;

        int N = strlen(S),it = 0;

        for (int i = 1;i < N;i++)
        {
            while(it && S[it] != S[i])
                it = P[it - 1];

            if (S[it] == S[i])
                it++;

            P[i] = it;

            if (P[i] && !((i + 1) % (i + 1 - P[i])))
                Sol = i + 1;
        }
        fout << Sol << "\n";
    }
  return 0;
}