Pagini recente » Cod sursa (job #376018) | Cod sursa (job #1617494) | Cod sursa (job #1411428) | Cod sursa (job #426817) | Cod sursa (job #3215424)
#include <bits/stdc++.h>
#pragma optimize GCC ("Ofast")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
///#include <tryhardmode>
///#include <GODMODE::ON>
using namespace std;
#define cin fin
#define cout fout
ifstream fin ("pscpld.in");
ofstream fout ("pscpld.out");
const int NMAX=2e6+5;
int dp[NMAX];
string a;
string s;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n,i,j,st=0,dr=0,dist=0;
long long kon=0;
cin>>a;
s.push_back('*');
for(auto i:a)
s.push_back(i),s.push_back('*');
n=s.size();
for(i=0;i<n;i++)
{
if(i>dr)
dist=1;
else
dist=min(dp[st+dr-i],dr-i);
while(i+dist<n)
{
if(i-dist<0)
break;
if(s[i+dist]!=s[i-dist])
break;
dist++;
}
dp[i]=dist;
if(dr<i+dist-1)
{
dr=i+dist-1;
st=i-dist+1;
}
}
for(i=0;i<n;i++)
kon+=dp[i]/2;
cout<<kon;
return 0;
}