Pagini recente » Cod sursa (job #3333455) | Cod sursa (job #3350451) | Cod sursa (job #3313652) | Cod sursa (job #3323707) | Cod sursa (job #3333121)
#include <fstream>
#define ll long long
using namespace std;
const int nmax = 1e6 + 5;
const string txt = "pscpld";
ifstream f(txt + ".in");
ofstream g(txt + ".out");
int p[nmax], ans;
string s;
int main()
{
char c; s += '@'; s += '#';
while (f >> c)
s += c, s += '#';
s += '!';
int l = 0, r = 0, n = s.size() - 1, ans = 0;
for (int i = 1; i < n; i++)
{
int poz = l + r - i;
if (i < r) p[i] = min(r - i, p[poz]);
while (s[i - p[i] - 1] == s[i + p[i] + 1]) p[i]++;
if (i + p[i] > r)
l = i - p[i], r = i + p[i];
ans += (p[i] + 1) / 2;
}
g << ans;
return 0;
}