Cod sursa(job #2709244)

Utilizator MateGMGozner Mate MateGM Data 20 februarie 2021 08:44:33
Problema Prefix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>
#include <vector>
#include <string>
using namespace std;

int build_kmp(char a[])
{

    vector<int>t(1000001,0);
    int ans=0;
    for(int i=1;a[i]!=0;i++)
    {
        int k=t[i-1];
        while(true){
            if(a[k]==a[i])
            {
                t[i]=k+1;
                break;
            }
            else if(k==0)
            {
                t[i]=0;
                break;
            }
            else k=t[k-1];
        }
        int hossz=i-t[i]+1;
        if (t[i] && !((i+1) %hossz)) {
			ans = max(ans, i + 1);
        }
    }
   return ans;
}

int main()
{
    ifstream be("prefix.in");
    ofstream ki("prefix.out");
    int n;
    be>>n;
    for(int i=0;i<n;i++)
    {
        char a[1000001];
        be>>a;
        ki<<build_kmp(a)<<"\n";

    }


    return 0;
}