Pagini recente » Cod sursa (job #1035573) | Cod sursa (job #471685) | Cod sursa (job #2831263) | Cod sursa (job #572178) | Cod sursa (job #2899825)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("pscpld.in");
ofstream fout("pscpld.out");
string ss,s;
int i,n,z[2000005],l,r;
int mymin(int a, int b)
{
return (a<b?a:b);
}
long long ans;
void solve()
{
fin>>ss;
int lg=ss.length();
s="%";
for(i=0;i<lg;i++)
{
s+='#';
s+=ss[i];
}
s+='#';
n=s.length()-1;
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++)
cout<<s[i]<<' ';
cout<<'\n';
for(i=1;i<=n;i++)
cout<<z[i]<<' ';
cout<<'\n';*/
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;
}