Pagini recente » Cod sursa (job #3180838) | Cod sursa (job #1235930) | Cod sursa (job #1892948) | Cod sursa (job #3184449) | Cod sursa (job #2458277)
#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 = 2; i < 2 * n - 1; i += 2)
{
if (i > r)
k = 1;
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 - 2] + v[i - k + 2])
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;
}