Pagini recente » Statistici Tudor Daniel Marin (rapidgiulesti) | Istoria paginii runda/mda_plng/clasament | Cod sursa (job #1340464) | Cod sursa (job #2029979) | Cod sursa (job #1967540)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("pscpld.in");
ofstream fout("pscpld.out");
const int MAX_N = 1e6 + 2;
char aux[MAX_N], s[MAX_N];
int n, dp[MAX_N];
void Konstruieste()
{
int m = 0;
for (int i = 1; i <= n; ++i)
{
s[++m] = '#';
s[++m] = aux[i];
}
s[++m] = '#';
n = m;
}
void Manaker()
{
long long ans = 0;
for (int i = 2; i <= n; ++i)
{
dp[i] = 1;
while (i - dp[i] > 0 && i + dp[i] <= n && s[i - dp[i]] == s[i + dp[i]])
++dp[i];
if (i % 2 == 0)
{
ans += (dp[i]) / 2;
}
else ans += (dp[i] - 1) / 2;
}
fout << ans;
}
int main()
{
fin >> (aux + 1);
n = strlen(aux + 1);
Konstruieste();
Manaker();
}