Pagini recente » testroundid | Istoria paginii runda/sdfdsf/clasament | Istoria paginii runda/uh/clasament | Istoria paginii runda/simulare_oji_10_4/clasament | Cod sursa (job #1238124)
#include <cstdio>
#include <cstring>
#include <algorithm>
#define NMAX 100007
using namespace std;
int n, Max, Ans;
int v[NMAX], p[NMAX];
int main(){
freopen("numarare.in", "r", stdin);
freopen("numarare.out", "w", stdout);
scanf("%d", &n);
for (int i = 1; i <= n; ++i)
scanf("%d", &v[i]);
p[0] = 1;
for(int i = 1; i < n; ++i){
int cnt = min(p[2 * Max - i], 2 * Max - i -(Max - p[Max]));
int l;
for(l = 0; i - cnt - l >= 1 && i + cnt + 1 + l <= n; ++l)
if(v[i - cnt - l] + v[i + cnt + 1 + l] != v[i] + v[i + 1])
break;
p[i] = cnt + l;
Ans += p[i];
if(p[i] + i > p[Max] + Max)
Max = i;
}
printf("%d", Ans);
return 0;
}