Cod sursa(job #733340)

Utilizator BarracudaFMI-Alex Dobrin Barracuda Data 11 aprilie 2012 21:10:25
Problema Prefix Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <fstream>
#include <string.h>
#define dim 1000020
using namespace std;

char s[dim];
int p[dim], maxu, t;
void prefix(){
	
    int i,k = 0,d=strlen(s+1);
	maxu = 0;
    for(i = 2, p[1] = 0; i <=d; i++){
        while(k > 0 && s[k + 1] != s[i])
            k = p[k];
        if(s[k + 1] == s[i])
            k++;
        p[i] = k;
        if(p[i]>0 && (i)%(i-p[i])==0)
            maxu = i ;
    }
}
int main(){
    ifstream f("prefix.in");
    ofstream g("prefix.out");
    f>>t;
	f.get();
    while(t--){
        f.getline(s+1, dim);
        prefix();
        g<<maxu<<'\n';
    }
    f.close();
    g.close();
    return 0;
}