Pagini recente » Cod sursa (job #1844792) | Cod sursa (job #821619) | Cod sursa (job #1532738) | Cod sursa (job #541846) | Cod sursa (job #1345564)
#include<stdio.h>
int sol,i,j,p[1000005*2],n,nr;
char s[1000004],c;
int main()
{
freopen("pscpld.in","r",stdin);
freopen("pscpld.out","w",stdout);
s[0]='#';
while(scanf("%c",&c)!=EOF)
{
if(c>='a'&&c<='z'){
nr++;
s[nr]=c;
nr++;
s[nr]='#';
}
}
n=nr;
for(i=1;i<n;i++)
{
if(j+p[j]<i)
{
while(s[i+p[i]+1]==s[i-p[i]-1]&&p[i]<i)
p[i]++;
}
else
{
if(i+p[2*j-i]<j+p[j])
{
p[i]=p[2*j-i];
}
else
{
p[i]=p[j]-i+j;
while(s[i+p[i]+1]==s[i-p[i]-1]&&p[i]<i)
p[i]++;
}
}
if(i+p[i]>j)
j=i;
sol+=(p[i]+1)/2;
}
printf("%d",sol);
return 0;
}