Pagini recente » Cod sursa (job #756036) | Cod sursa (job #1443751) | Cod sursa (job #604898) | Cod sursa (job #543690) | Cod sursa (job #1304056)
#include<fstream>
#include<algorithm>
#include<string>
using namespace std;
int d[5][1000005],i,p,n,k,l,r;
long long rs;
string s;
int main()
{
ifstream cin("pscpld.in");
ofstream cout("pscpld.out");
getline(cin,s); n=s.length();
for(p=0;p<2;++p)
for(r=-1,l=i=0;i<n;++i)
{
k=(i>r ? 0:min(d[p][l+r-i]-p,r-i))+1;
while(i+k-1<n && i-k+p>=0 && s[i+k-1]==s[i-k+p]) ++k;
d[p][i]=--k;
if(i+k>r) l=i-k+p,r=i+k-1;
}
for(i=0;i<n;++i) rs+=d[0][i]+d[1][i];
cout<<rs<<'\n';
return 0;
}