Cod sursa(job #718204)

Utilizator repp4raduRadu-Andrei Szasz repp4radu Data 20 martie 2012 17:00:27
Problema Prefix Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 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; 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]) == 0))
        {
            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);
        getPrefix();
        out<<sol<<'\n';
    }
    in.close(); out.close();
    return 0;
}