Pagini recente » Cod sursa (job #2601009) | Cod sursa (job #2702847) | Cod sursa (job #657113) | Cod sursa (job #929866) | Cod sursa (job #2960222)
#include <iostream>
#include <fstream>
#define MAX 2000052
using namespace std;
string s;
int p[MAX],l,r,n;
ifstream fin("pscpld.in");
ofstream fout("pscpld.out");
int main()
{
fin >> s;
string aux = "$";
for(auto ch: s){
aux += "#";
aux += ch;
}
aux += "#^";
s = aux;
l = r = 1;
n = s.size() - 2;
for(int i = 1; i <= n; i++){
if(r > i){
p[i] = min(r-i, p[l+(r-i)]);
}else{
p[i] = 0;
}
while(s[i+p[i]] == s[i-p[i]]){
p[i]++;
}
if(i+p[i] > r){
r = i+p[i];
l = i-p[i];
}
}
int ans = 0;
for(int i = 1; i <= n; i++){
ans += p[i]/2;
}
fout << ans;
return 0;
}