Cod sursa(job #19316)

Utilizator blahblahblahblah blahblah Data 19 februarie 2007 11:19:43
Problema Prefix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <stdio.h>
#include <string.h>
#define LMAX 1000010
int n;
char s[LMAX];
int main()
{
	int q,t,i,j,l = 0,lc, p = 0,beg,e,E,lmax;
	freopen("prefix.in", "r", stdin);
	freopen("prefix.out", "w", stdout);
	scanf("%d", &n);
	gets(s);
	for (j = 1; j <= n; j++)
	{
		gets(s);
		q = strlen(s);

		l = p = 0;
		beg = 0;
		lmax = 0;

		for (i = 1; i < q;)
		{
			e = 0;
			if (s[i] == s[beg]) beg++, e = 1;
				else
				{
					if (beg == 0) e = 1;
					beg = 0, p = 0, l = 0;
				}

			if (beg == p)
			{
				l += p;
				if (l > lmax) lmax = l;
				beg = 0;
			}

			if (beg)
			if (i & 1)
			if ( (beg == (i+1) >> 1) || ( beg == 1 && i == 1))
			{
				l = i+1;
				if (l > lmax) lmax = l;
				p = (i+1) >> 1;
				beg = 0;
			}
			if (e) i++;

		}

		printf("%d\n", lmax);
	}
fclose(stdin);
fclose(stdout);
return 0;
}