Pagini recente » Cod sursa (job #3313648) | Cod sursa (job #3312172) | Cod sursa (job #3313649) | Cod sursa (job #3330041) | Cod sursa (job #3350266)
#include <bits/stdc++.h>
using namespace std;
#define ST_DIO 0
#if ST_DIO
#define fin cin
#define fout cout
#else
ifstream fin("pscpld.in");
ofstream fout("pscpld.out");
#endif // ST_DIO
int n, i, a[1000002], ma, pma, lgpoz[1000002];
char cc[1000002], c[2 * 1000002];
long long rasp;
int main() {
if(ST_DIO) ios_base::sync_with_stdio(false);
fin.tie(nullptr);
fout.tie(nullptr);
fin >> cc;
n = strlen(cc);
c[0] = '#';
for(i = 1; i <= n; i++) {
c[2 * i - 1] = cc[i - 1];
c[2 * i] = '#';
}
n = 2 * i;
for(i = 0; i <= n; i++) {
int lg = 0;
if(i < ma) lg = min(ma - i, lgpoz[pma - (i - pma)]);
while(0 <= i - lg && i + lg <= n && c[i - lg] == c[i + lg]) lg++;
lg--;
if(ma < i + lg) {
ma = i + lg;
pma = i;
}
lgpoz[i] = lg;
rasp += (lg + 1) / 2;
}
fout << rasp;
return 0;
}