Pagini recente » Cod sursa (job #2217919) | Cod sursa (job #2107516) | Cod sursa (job #2021227) | Cod sursa (job #2647669) | Cod sursa (job #2548177)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("numarare.in");
ofstream fout("numarare.out");
int main() {
int n; fin >> n;
vector<int> v(n);
for (int i = 0; i < n; i++)
fin >> v[i];
vector<int> dp(n);
for (int i = 0, l = 0, r = -1; i < n; i++) {
int k = (i > r ? 0 : min(dp[l + r - i + 1], r - i + 1));
while (0 <= i - k - 1 && i + k < n && v[i - k - 1] + v[i + k] == v[i - k] + v[i + k - 1])
k++;
dp[i] = k--;
if (i + k > r) {
l = i - k - 1;
r = i + k;
}
}
int64_t sol = 0;
for (int i = 0; i < n; i++)
sol += dp[i];
fout << sol << '\n';
fout.close();
return 0;
}