Cod sursa(job #1880327)

Utilizator sfechisalin@yahoo.comSfechis Alin [email protected] Data 15 februarie 2017 18:04:53
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <bits/stdc++.h>
#define NN 1000005
using namespace std;
ifstream fin("prefix.in");
ofstream fout("prefix.out");
int T , answ , k , cnt;
string sir , s;
int main()
{
    fin >> T;
    fin.get();
    for (; T ; --T)
    {
        cnt = 0;
        answ = 0;
        k = 0;
        getline(fin,s);
        sir = " ";
        sir += s;
        vector<int>pi(sir.length(),0);
        for (int i = 2; sir[i] ; ++i)
        {
            while(k && sir[k+1] != sir[i])
                k = pi[k];
            if (sir[k+1] == sir[i])
                k++;
            pi[i] = k;
        }
        bool gasit = false;
        for (int i = sir.size();i >= 1 && !gasit; --i)
        {
            if (!pi[i])
                continue;
            int p_start = i-pi[i];
            if (pi[i] % p_start == 0)
            {
                fout << i << "\n";
                gasit = true;
            }
        }
        if (!gasit)
            fout << 0 << "\n";
    }
    return 0;
}