Pagini recente » Cod sursa (job #3313044) | Cod sursa (job #3315347) | Cod sursa (job #3313644) | Cod sursa (job #3323709) | Cod sursa (job #3333454)
#include <bits/stdc++.h>
using namespace std;
int man[200005];
int main()
{
ifstream cin("pscpld.in");
ofstream cout("pscpld.out");
string ini,s;
int mid=0;
cin>>ini;
s="&&";
for(auto it: ini)
{
s+=it;
s+='&';
}
for(int i=1;i<s.size();i++)
{
if(mid+man[mid]>=i)
{
man[i]=min(man[2*mid-i], mid+man[mid]-i);
}
while(i+man[i]+1<s.size()&&i-man[i]>=2 &&s[i+man[i]+1]==s[i-man[i]-1])
man[i]++;
if(i+man[i]>=mid+man[mid])
mid=i;
}
long long int ans=0;
for(int i=1;i<s.size();i++)
{
ans+=(man[i]+1)/2;
}
cout<<ans;
return 0;
}