Cod sursa(job #2495701)

Utilizator RedXtreme45Catalin RedXtreme45 Data 19 noiembrie 2019 19:24:50
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
#include <string>
#include <vector>
#include <cstring>
#define Nmax 1000001
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
string s,t;
int stare[Nmax],nr;
vector <int> v;
int main()
{
    int n;
    fin>>n;
    for (int j=1; j<=n; j++)
    {
        fin>>s;
        memset(stare,0,sizeof stare);
        int st=0,i,x=s.size(),max1=0,poz=0;
        for (i=2; i<=x; i++)
        {
            while (st>0 && s[st]!=s[i-1])
                st=stare[st];
            if (s[st]==s[i-1])
            {
                st++;
            }
            stare[i]=st;
            if (stare[i]>max1)
            {
                max1=stare[i];
                poz=i;
            }
        }
        int OK=0;
        for (i=x; i>0 && OK==0; i--)
        {
            if (stare[i]>=(i+1)/2 && stare[i]%(i-stare[i])==0)
            {
                fout<<i<<"\n";
               OK=1;
            }
        }
        if (OK==0)
            fout<<0<<"\n";
    }
    return 0;
}