Cod sursa(job #333848)
Utilizator | Popovici Mihai misuvd | Data | 24 iulie 2009 11:39:20 |
---|---|---|---|
Problema | Prefix | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.73 kb |
#include<string>
using namespace std;
#define MAX_N 1000003
#include<fstream.h>
ofstream g("prefix.out");
char s[MAX_N];
int N;
void solve()
{
int i, L, nou, vechi;
int sol=0;
L=1;
s[0]='!';
N=strlen(s)-1;
for(i=1;i<=N;++i)
{
if(s[i]==s[i-L])
nou=vechi + 1;
else
{
nou=0; L=i;
}
if(nou==L)
{
nou=0;
sol=i;
}
vechi=nou;
}
g<<sol<<"\n";
}
int main()
{
int T;
ifstream f("prefix.in");
f>>T;
while(T--)
{
memset(s,0,sizeof(s));
f.get(s,MAX_N);
f.get();
solve();
}
return 0;
}