Pagini recente » Cod sursa (job #474847) | Cod sursa (job #1008262) | Cod sursa (job #3254309) | Cod sursa (job #757008) | Cod sursa (job #2289088)
#include <cstdio>
#include <algorithm>
using namespace std;
char a[2000005];
int p[2000005], sim[2000005];
int main()
{
freopen("pscpld.in", "r", stdin);
freopen("pscpld.out", "w", stdout);
int ok=0, n, i;
for(i=0;ok==0;i++)
{
if(i%2==1)
{
char c;
scanf("%c", &c);
if(c>='a' && c<='z')
a[i]=c;
else ok=1;
}
else a[i]='#';
}
n=i-1;
int c=0, r=0, pal=0;
for(i=1;i<=n-1;i++)
{
ok=0;
sim[i]=c-(i-c);
p[i]=0;
//if(r>i)
//p[i]=min(r-i, p[sim[i]]);
while(a[i+1+p[i]]==a[i-1-p[i]])
{
if(a[i+1+p[i]]=='#')
pal++;
p[i]=p[i]+1;
}
if(i+p[i]>r)
{
r=i+p[i];
c=i;
}
}
printf("%d", pal);
return 0;
}