Cod sursa(job #1469510)

Utilizator dorumusuroiFMI - Doru Musuroi dorumusuroi Data 8 august 2015 15:47:19
Problema Prefix Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
const char iname[] = "prefix.in";
const char oname[] = "prefix.out";
vector<int> getPrefix(const string P)
{
    vector<int> pr;
    pr.push_back(-1);
    int m = P.length();
    int k = -1;
    for(int q = 1; q < m; q++)
    {
        while(k>-1 && P[k+1] != P[q])
            k = pr[k];
        if(P[k+1] == P[q])
            k++;
        pr.push_back(k);
    }
    return pr;
}

int main()
{
    ifstream in(iname);
    ofstream out(oname);
    vector<int> pr;
    string P;
    int T;
    in >> T;
    for(int q = 0; q < T; q++)
    {
        in >> P;
    pr = getPrefix(P);
    int poz, dim = 0;
    for(int i = 0; i < (int)pr.size(); i++)
    {
//        cout << i << ' ' << pr[i]+1 << '\n';
        if(pr[i]+1 == 1)    poz = i;
        if((pr[i]+1 > 0) && ((pr[i]+1) % poz == 0))    dim = i+1;
    }
    out << dim << '\n';;
    }
    return 0;
}