Pagini recente » Cod sursa (job #1835063) | Cod sursa (job #553328) | Cod sursa (job #1724396) | Cod sursa (job #1885122) | Cod sursa (job #2899827)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("pscpld.in");
ofstream fout("pscpld.out");
char ss[2000005];
int i,n,z[2000005],l,r;
int mymin(int a, int b)
{
return (a<b?a:b);
}
long long ans;
char s[2000005];
void solve()
{
fin>>ss;
s[0]='%';
for(i=0;ss[i];i++)
{
s[++n]='#';
s[++n]=ss[i];
}
s[++n]='#';
for(i=1;i<=n;i++)
{
if(i<=r)
z[i]=mymin(z[l+r-i],r-i+1);
while(i-z[i]>0&&i+z[i]<=n&&s[i-z[i]]==s[i+z[i]])z[i]++;
if(i+z[i]-1>r)
{
r=i+z[i]-1;
l=i-z[i]+1;
}
}
for(i=1;i<=n;i++)
{
ans+=(z[i]>>1);
}
fout<<ans<<'\n';
}
signed main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int tt=1;
//cin>>tt;
for(int t=1;t<=tt;t++)
solve();
return 0;
}