Cod sursa(job #2481906)

Utilizator andreigaliAndrei Galitianu andreigali Data 27 octombrie 2019 16:19:55
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <iostream>
#include <fstream>
#include <cstring>

using namespace std;
const int MAXN = 2000041;
int v[MAXN];
int nr;

void sirprefixe(char x[], int n)
{
    nr=0;
    int j=0;
    for(int i=2; i<=n; i++)
    {
        while(j>0 && x[i]!=x[j+1])
        {
            j = v[j];
        }
        if(x[i]==x[j+1])
            j++;
        v[i] = j;

        int d=i-j;
        if(j!=0 && i%d==0)
            nr = max(nr, (i/d)*d);
    }
}

int main()
{
    ifstream fin ("prefix.in");
    ofstream fout ("prefix.out");

    int n, t;
    char a[MAXN],g[50];
    fin >> t;
    fin.getline(g, 50);
    for(int i=0; i<t; i++)
    {
        fin.getline(a+1, MAXN);
        n = strlen(a+1);

        sirprefixe(a, n);
        fout << nr << "\n";
    }


    return 0;
}