Pagini recente » Cod sursa (job #1020549) | Cod sursa (job #1828184) | Cod sursa (job #2917548) | Cod sursa (job #745117) | Cod sursa (job #3226679)
#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;
cin>>a;
s.push_back('*');
for(auto i:a)
{
s.push_back(i);
s.push_back('*');
}
n=s.size();
int st=0,dr=0,dist=0;
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;
}
}
long long kon=0;
for(i=0;i<n;i++)
kon+=dp[i]/2;
cout<<kon;
return 0;
}