Pagini recente » Cod sursa (job #1135386) | Cod sursa (job #1599249) | Cod sursa (job #2324648) | Cod sursa (job #2799646) | Cod sursa (job #2458274)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("numarare.in");
ofstream out("numarare.out");
int v[100005];
int cnt[2000001];
int n, l, r, k;
long long ans;
int main()
{
in >> n;
for (int i = 0; i < n; i++)
in >> v[2 * i + 1];
for (int i = 1; i < 2 * n; i += 2)
{
if (i > r)
k = 0;
else
k = min(cnt[l + r - i], r - i);
while (i + k < n && i - k >= 0 && v[i + k] + v[i - k] == v[i + k - 1] + v[i - k + 1])
k += 2;
cnt[i] = k--;
if (i + k > r)
{
r = i + k;
l = i - k;
}
}
ans = n;
for (int i = 1; i < 2 * n; i += 2)
ans += (cnt[i] - 1) / 2;
out << ans;
return 0;
}