Mai intai trebuie sa te autentifici.
Cod sursa(job #1471645)
Utilizator | Data | 14 august 2015 19:19:34 | |
---|---|---|---|
Problema | Prefix | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.03 kb |
#include <cstdio>
#include <cstring>
#define DIM 1000007
using namespace std;
FILE *fin, *fout;
char s[DIM];
int ans, t;
void init()
{
memset(s, 0, sizeof(s));
ans = 0;
}
void citire()
{
scanf("%s", s+1);
}
void solve()
{
int l = 1, tmp[2], sze = strlen(s + 1), p;
tmp[0] = tmp[1] = 0;
s[0] = '[';
for(int i = 2; i<= sze; ++i)
{
p = i&1;
if(s[i] == s[i - l] && (i == sze || s[i+1] == s[i+1 - l] || tmp[!p] +1 == l)) tmp[p] = tmp[!p] + 1;
else
{
tmp[p] = 0;
l = i;
}
if(tmp[p] == l)
{
tmp[p] = 0;
ans = i;
}
}
}
void afisare()
{
printf("%d\n", ans);
}
int main()
{
fin = freopen("prefix.in", "r", stdin);
fout = freopen("prefix.out", "w", stdout);
scanf("%d", &t);
for(int i = 1; i<= t; ++i)
{
init();
citire();
solve();
afisare();
}
fclose(fin);
fclose(fout);
return 0;
}