Cod sursa(job #733498)

Utilizator DaNutZ2UuUUBB Bora Dan DaNutZ2UuU Data 12 aprilie 2012 12:48:44
Problema Prefix Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>
#include <cstring>

#define MAX 5050

using namespace std;

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

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

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