Cod sursa(job #1006822)
| Utilizator | Data | 7 octombrie 2013 20:09:29 | |
|---|---|---|---|
| Problema | Prefix | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.57 kb |
#include <cstdio>
#include <cstring>
#define N 1000002
using namespace std;
char a[N];
int main()
{
freopen("prefix.in", "r", stdin);
freopen("prefix.out", "w", stdout);
int n, t, i, sol, l, dr;
scanf("%d\n", &t);
a[0]='0';
for(;t;t--)
{
memset(a+1, 0, sizeof(a)-1);
gets(a+1);
n=strlen(a)-1;
sol=dr=0;
l=1;
for(i=2;i<=n;i++)
{
if(a[i]==a[i-l]&&(i==n||a[i+1]==a[i-l+1]||dr%l+1==l))
{
dr++;
}
else
{
l=i;
dr=0;
}
if(dr==l)
{
dr=0;
sol=i;
}
}
printf("%d\n", sol);
}
}
