Cod sursa(job #1932319)

Utilizator darian2001Clodnischi Darian Antonio darian2001 Data 19 martie 2017 17:42:23
Problema Prefix Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <cstdio>
#include <fstream>
#include <string>
#include <vector>
using namespace std;

ifstream f("prefix.in");

int calcul_prefix()
{
    string cuvant;
    vector <int>prefix(1000000,0);
    f>>cuvant;
    int n=cuvant.size();
    int i=1,j=0,lmax=0;
    for(i=1;i<n;i++)
    {

        while(cuvant[i]!=cuvant[j]&&j>0)
            {
            j=prefix[j-1];
            }
        if(cuvant[i]==cuvant[j])
        {
            j++;
            prefix[i]=j;
        }
        if(prefix[i]!=0)
        if(prefix[i]%(i+1-prefix[i])==0&&(i+1)<=2*prefix[i])
            lmax=i+1;
    }
    return lmax;
}

int main()
{
    freopen("prefix.out", "w", stdout);
    int t;
    f>>t;
    for(int i=0;i<t;i++)
     printf("%d\n", calcul_prefix());
     return 0;
}