Pagini recente » Cod sursa (job #375796) | Cod sursa (job #900053) | Cod sursa (job #3154053) | Cod sursa (job #636584) | Cod sursa (job #1734755)
//#include <iostream>
//#include <cstdio>
//#include <cstring>
//#include <vector>
//#include <algorithm>
//#include <cmath>
//
//using namespace std;
//
//#define mp make_pair
//#define pb push_back
//#define ll long long
//
//#define maxN 100011
//#define inf 1000000
//
//int n, i;
//int v[maxN];
//ll ans;
//
//int len[maxN];
//int C, fin;
//
//int main()
//{
// freopen("numarare.in","r",stdin);
// freopen("numarare.out","w",stdout);
//
// scanf("%d", &n);
// for (i = 1; i <= n; i++)
// scanf("%d", &v[i]);
// v[0] = v[n + 1] = -inf;
//
//
// C = fin = 0;
// for (i = 1; i < n; i++) {
// if (i + 1 <= fin) len[i] = min(len[2 * C - i], fin - i);
// while (v[i] + v[i + 1] == v[i + 1 + len[i]] + v[i - len[i]]) len[i]++;
// ans += 1LL * len[i];
//
// if (i + len[i] >= fin) {
// C = i;
// fin = i + len[i];
// }
// }
//
// printf("%lld", ans);
//
// return 0;
//}
//
#include<fstream>
using namespace std;
ifstream fi("numarare.in");
ofstream fo("numarare.out");
int sum,st,dr,i,n,a[100002],lg[100002];
int main()
{
fi>>n;
for(i=1;i<=n;++i) fi>>a[i];
for(i=1;i<n;i++)
{
st=i;dr=i+1;sum=a[st]+a[dr];
while(st>0 && lg[st]<=1 && a[st]+a[dr]==sum)st--,dr++;
st++;dr--;
lg[i]=dr-i;
}
//for(i=1;i<=n;i++)fo<<lg[i]<<" ";fo<<endl;
for(i=1;i<n;i++)
if(lg[i]>1)
{
sum=a[i]+a[i+1];
while(a[i-lg[i]]+a[i+1+lg[i]]==sum)
lg[i]+=min(lg[i-lg[i]],a[i-lg[i]]);
}
//for(i=1;i<=n;i++)fo<<lg[i]<<" ";fo<<endl;
long long sol=0;
for(i=1;i<=n;i++)sol+=lg[i];
fo<<sol<<'\n';
return 0;
}