Cod sursa(job #1625053)

Utilizator DiClauDan Claudiu DiClau Data 2 martie 2016 16:14:47
Problema Prefix Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include<fstream>
using namespace std;
const  int N = 1000005;
char s[N];
int pred[N];
int calculPred ()
{
    int i, k = 0, sol = 0;
    pred[1] = 0;
    for (i = 2; s[i]; i++)
    {
        while (k > 0 && s[i] != s[k + 1])
            k = pred[k];
        if (s[i] == s[k + 1])
            k++;
        pred[i] = k;
        if (pred[i] != 0 && i % (i - pred[i]) == 0)
            sol = i;
    }
    return sol;
}
int main ()
{
    ifstream in ("prefix.in");
    ofstream out ("prefix.out");
    int n;
    in>>n>>ws;
    int i;
    for (i = 1; i <= n; i++)
    {

        in>>s;
        out<<calculPred()<<"\n";

    }
    return 0;
}