Pagini recente » Cod sursa (job #1423258) | Cod sursa (job #811728) | Cod sursa (job #829005) | Cod sursa (job #1161374) | Cod sursa (job #2499541)
#include <iostream>
#include <fstream>
#define ll long long
using namespace std;
ifstream in("pscpld.in");
ofstream out("pscpld.out");
ll a[2000006];
int main(){
ll n,i,c=0,r=0,sum=0;
string s;
in>>s;
n=2*s.length()-1;
for(i=0; i<n; ++i){
if(i<r)
a[i]=min(a[2*c-i], r-i);
while(i-a[i]-1>=0 && i+a[i]+1<n && ((i+a[i]+1)%2 || s[(i+a[i]+1)/2]==s[(i-a[i]-1)/2]))
++a[i];
if(i+a[i]>r)
c=i, r=i+a[i];
sum+=a[i]/2+1-i%2;
}
out<<sum;
return 0;
}