Cod sursa(job #974486)

Utilizator costin7856Antonesi Florean Costin costin7856 Data 17 iulie 2013 12:53:15
Problema Prefix Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<fstream>
#include<cstring>
#define dim 1000009
using namespace std;
int nr,n,k,a[dim],ok,x;
char v[dim];
void pref()
{
    int k=0;
    a[1]=0;
    for(int i=2;i<=x;++i)
    {
        while(k>0&&v[k+1]!=v[i])
        k=a[k];
        if(v[k+1]==v[i])
        k++;
        a[i]=k;
    }
}
int main()
{
    ifstream f("prefix.in");
    ofstream g("prefix.out");
    f>>n;
    int i;
    while(n--)
    {
        f>>(v+1);
        x=strlen(v+1);
        pref();
        ok=0;
        for(int i=x;i&&!ok;i--)
        {
           if(i-a[i]==a[i]||i-a[i]==a[i]-a[a[i]]&&v[a[i]])
            {
                g<<i<<"\n";
                ok=1;
            }
        }
        if (!ok)
        g<<"0\n";
    }
}