Cod sursa(job #2306496)

Utilizator filicriFilip Crisan filicri Data 22 decembrie 2018 14:06:31
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <fstream>
#include <string>
#include <vector>
#define lim 1000004
using namespace std;
ifstream f("prefix.in");
ofstream g("prefix.out");
int t,pre[lim],maxim,ns;
string s;
void prefix (void)
{
    int j=0;
    for (int i=2;i<=s.length();i++)
    {
        while (j && s[j+1]!=s[i]) j=pre[j];
        if (s[j+1]==s[i]) j++;
        pre[i]=j;
    }
}
int main()
{
    f>>t;
    while (t--)
    {
        f>>s;
        ns=s.length();
        maxim=0;
        s='0'+s;
        prefix();
        for (int i=1;i<=ns;i++)
            if (pre[i] && i%(i-pre[i])==0) maxim=i;
        g<<maxim<<'\n';
    }
    f.close();
    g.close();
    return 0;
}