Pagini recente » Cod sursa (job #1548592) | Cod sursa (job #1606330) | Cod sursa (job #186538) | Cod sursa (job #186077) | Cod sursa (job #810316)
Cod sursa(job #810316)
#include<iostream>
#include<cstdio>
using namespace std;
const int N = 110000;
int n, x[N], s, p[N];
void calcp() {
int i, c, last = 0;
for(i = 1; i!=n; ++i) {
if(last > i)
p[i] = min(last - i - 1, p[c - (i - c)]);
for(; i - p[i] > 0 && i + p[i] + 1 <= n && x[i - p[i]] + x[i + p[i] + 1] == x[i] + x[i + 1]; ++p[i]);
if(p[i] + i + 1 > last)
last = p[i] + i + 1, c = i;
s += p[i];
}
}
int main() {
int i;
freopen("numarare.in", "r", stdin);
freopen("numarare.out", "w", stdout);
cin >> n;
for(i = 1; i<=n; ++i)
cin >> x[i];
calcp();
cout << s;
return 0;
}