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