Pagini recente » Cod sursa (job #1284745) | Cod sursa (job #351483) | Cod sursa (job #1284774) | Cod sursa (job #2969136) | Cod sursa (job #2232028)
#include <fstream>
#include <cstring>
#include <algorithm>
using namespace std;
ifstream cin("pscpld.in");
ofstream cout("pscpld.out");
int d[2000008];
char s[2000008];
int main() {
ios::sync_with_stdio(false);
int n = 0;
s[n++] = '+';
while (cin >> s[n++])
s[n++] = '+';
long long res = 0;
int r = 1;
for (int i = 1; i < n - 1; ++i) {
if (r + d[r] > i)
d[i] = min(d[2 * r - i], r + d[r] - i);
while (0 <= i - d[i] && i + d[i] < n && s[i - d[i]] == s[i + d[i]]) {
++d[i];
r = i;
}
res += 1LL * d[i] / 2;
}
cout << res;
return 0;
}