Cod sursa(job #1932305)

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

ifstream f("prefix.in");
ofstream g("prefix.out");

void 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;
    }
    g<<lmax<<"\n";
}

int main()
{
    int t;
    f>>t;
    for(int i=0;i<t;i++)
    calcul_prefix();
    f.close();g.close();
}