Pagini recente » Cod sursa (job #3253061) | Cod sursa (job #207590) | Cod sursa (job #613559) | Cod sursa (job #2941112) | Cod sursa (job #2798898)
#include <bits/stdc++.h>
using namespace std;
ifstream in("numarare.in");
ofstream out("numarare.out");
using ll = long long;
int main() {
in.tie(NULL);
out.tie(NULL);
ios_base::sync_with_stdio(false);
int n; in >> n;
vector<int> v(n);
for (int &x : v)
in >> x;
vector<int> pal(n);
for (int i = 0; i < n - 1; i++)
v[i] = v[i + 1] - v[i];
int l = -1, r = -1;
ll ans = 0;
for (int i = 0; i < n - 1; i++) {
if (i > r)
pal[i] = 1;
else
pal[i] = min(r - i + 1, pal[l + r - i]);
while (i - pal[i] >= 0 && i + pal[i] < n && v[i + pal[i]] == v[i - pal[i]])
pal[i]++;
pal[i]--;
if (i + pal[i] > r) {
r = i + pal[i];
l = i - pal[i];
}
ans += (pal[i] + 1);
}
out << ans << "\n";
return 0;
}