Pagini recente » Cod sursa (job #676157) | Cod sursa (job #516191) | Cod sursa (job #2538612) | Cod sursa (job #2961529) | Cod sursa (job #2528399)
#include <bits/stdc++.h>
#define NMAX (int)(2e6+4)
#define pb push_back
#define ft first
#define sd second
using namespace std;
ifstream fin("pscpld.in");
ofstream fout("pscpld.out");
typedef pair <int, int> pairINT;
typedef long long ll;
int n,c,r,dp[NMAX];
ll sol;
string s;
int main(){
fin>>s;
n=s.size()*2-1;
for(int i=0;i<n;++i){
if(r > i)
dp[i] = min(dp[2 * c - i], (r-i)/2);
while (i - 2 * dp[i] >= 0 && i + 2 * dp[i] + 1 <= n && s[(i - 2 * dp[i]) / 2] == s[(i + 2 * dp[i] + 1)/2])
++dp[i];
if(i+2 * dp[i] + 1 > r)
c = i,
r = i + 2 * dp[i] + 1;
sol += dp[i];
}
fout<<sol;
return 0;
}