Cod sursa(job #2708860)

Utilizator MateGMGozner Mate MateGM Data 19 februarie 2021 15:32:52
Problema Prefix Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>
#include <vector>
#include <string>
using namespace std;

int build_kmp(string a)
{
    int na=a.length();
    vector<int>t(na,0);
    int ans=0;
    for(int i=1;i<na;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++)
    {
        string a;
        be>>a;
        ki<<build_kmp(a)<<"\n";

    }


    return 0;
}