Pagini recente » Cod sursa (job #2841278) | Cod sursa (job #235032) | Cod sursa (job #1578140) | Cod sursa (job #1208077) | Cod sursa (job #1231925)
#include <fstream>
#include <cstring>
using namespace std;
const int NMAX = 1000005;
int N, extmx, sol = 1;
char a[NMAX], dp[NMAX << 1];
ifstream fin("pscpld.in");
ofstream fout("pscpld.out");
int main() {
fin.getline(a, NMAX);
N = strlen(a);
N = (N << 1) - 1;
dp[0] = 1;
for (int i = 1; i < N; ++i) {
if (i < extmx + dp[extmx])
dp[i] = (extmx << 1) - i;
else
dp[i] = 1 - (i & 1);
while (i + dp[i] < N - 1 && i - dp[i] > 0) {
if (a[(i + dp[i] + 1) >> 1] != a[(i - dp[i] - 1) >> 1])
break;
dp[i] += 2;
}
sol += (dp[i] + 1) >> 1;
}
fout << sol << "\n";
return 0;
}