Pagini recente » Cod sursa (job #2967725) | Cod sursa (job #1466616) | Cod sursa (job #1820328) | Cod sursa (job #903239) | Cod sursa (job #2185500)
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5;
int diff[MAXN + 1], man[MAXN + 1], v[MAXN + 1];
int main()
{
int n;
ifstream fin("numarare.in");
fin >> n;
for (int i = 1; i <= n; ++i)
fin >> v[i];
fin.close();
for (int i = 1; i < n; ++i)
diff[i] = v[i + 1] - v[i];
int r = -1, l = -1;
long long ans = 0LL;
for (int i = 1; i < n; ++i) {
if (i > r)
man[i] = 1;
else
man[i] = min(r - i, man[r - i + l]);
while (i + man[i] < n && diff[i + man[i]] == diff[i - man[i]])
++man[i];
ans += man[i];
if (i + man[i] - 1 > r) {
r = i + man[i] - 1;
l = i - man[i] + 1;
}
}
ofstream fout("numarare.out");
fout << ans << '\n';
fout.close();
return 0;
}