Cod sursa(job #718210)

Utilizator repp4raduRadu-Andrei Szasz repp4radu Data 20 martie 2012 17:04:21
Problema Prefix Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream>
#include <string.h>

#define MAX 1000050

using namespace std;

char sir[MAX];
int pfix[MAX], sol, t;

void getPrefix()
{
    int i, q = 0, lgt = strlen(sir) - 1;
    for(i = 2, pfix[1] = 0; i <= lgt; i++)
    {
        while(q && sir[q + 1] != sir[i])
            q = pfix[q];
        if(sir[q + 1] == sir[i])
            q++;
        pfix[i] = q;
        if(q && !(i % (i - pfix[i])))
            sol = i;
    }
}

int main()
{
    ifstream in("prefix.in");
    ofstream out("prefix.out");
    in>>t;
    in.getline(sir, MAX);
    while(t--)
    {
        in.getline(sir + 1, MAX); sir[0] = ' ';
        getPrefix();
        out<<sol<<'\n';
    }
    in.close();
    out.close();
    return 0;
}