Cod sursa(job #2057686)

Utilizator patcasrarespatcas rares danut patcasrares Data 4 noiembrie 2017 16:42:38
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<fstream>
#include<iostream>
#include<vector>
#define DN 1000005
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
int t,pr[DN],k,y,z,p,nr;
string a;
int main()
{
    fin>>t;
    for(int h=1;h<=t;h++)
    {
        fin>>a;
        pr[0]=-1;
        k=-1;
        nr=0;
        for(int i=1;i<a.size();i++)
        {
            while(k!=-1&&a[k+1]!=a[i])
                k=pr[k];
            if(a[k+1]==a[i])
                k++;
            pr[i]=k;
            if(pr[i]!=-1)
            {
                y=pr[i]+1;
                z=i+1;
                p=z-y;
                if(z%p==0)
                    nr=z;
            }
        }
        fout<<nr<<'\n';
    }
}