Cod sursa(job #479612)

Utilizator Programmer01Mierla Laurentiu Marian Programmer01 Data 24 august 2010 16:04:04
Problema Prefix Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include<stdio.h>
#include<string.h>

int *p, n;
char *a;

int prefix(int length){
	int k = -1, max = 0;
	p = new int [length];
	p[0] = -1;

	for(int i=1; i<length; i++) {
		while(k>=0 && a[k+1] != a[i])
			k = p[k];
		if(a[k+1] == a[i]) ++k;
		p[i] = k;
		if(k != -1 && !(i+1)%(i-k)) max = i+1;
	}

	delete[] p;
	return max;
}

void read(){
	FILE *ifile;
	ifile = fopen("prefix.in", "r");
	
	
	fscanf(ifile, "%i", &n);
	
	FILE *ofile;
	ofile = fopen("prefix.out", "w");
	
	for(int i=0; i<n; i++) {
		a = new char[1000005];
		fscanf(ifile, "%s", a);
		fprintf(ofile, "%i\n", prefix(strlen(a)));
		delete[] a;
	}

	fclose(ifile);
	fclose(ofile);
}

int main()
{
	read();
	return 0;
}