Pagini recente » Cod sursa (job #343528) | Cod sursa (job #1040308) | Cod sursa (job #1804328) | Cod sursa (job #2951196) | Cod sursa (job #2460867)
#include <fstream>
#include <iostream>
#include <string>
#define NMAX 1000000
using namespace std;
ifstream f("pscpld.in");
ofstream g("pscpld.out");
int v[NMAX+10], sol;
string s, s1;
int main()
{
f >> s1;
s = '$';
for(int i=0; i<s1.size(); i++) s = s + '#' + s1[i];
s = s + '#' + '@';
int C=0, R=0;
for(int i=1; i<s.size()-1; i++)
{ int ogl = 2*C - i;
if(i <= R) v[i] = min(R-i, v[ogl]);
while(s[i+v[i]+1] == s[i-v[i]-1]) v[i]++;
if(v[i] + i > R)
{ C = i;
R = v[i] + i;
}
}
for(int i=0; i<s.size(); i++) sol = sol + v[i]/2;
g << sol + s1.size() << '\n';
return 0;
}