Pagini recente » Cod sursa (job #2011563) | Cod sursa (job #2834590) | Cod sursa (job #1513366) | Cod sursa (job #2632272) | Cod sursa (job #2679748)
#include <bits/stdc++.h>
using namespace std;
ifstream in("numarare.in");
ofstream out("numarare.out");
int v[1000005],z[1000005];
long long ans;
int main()
{
int n;
in>>n;
for(int i=1;i<=n;i++)
in>>v[i];
int R=0,C=0;
for(int i=1;i<n;i++)
{
int aux=2*C-i;
if(i>R || z[aux]>=R-i)
{
if(i>R) R=i;
int k=R+1;
int sum=v[i]+v[i+1];
while(k<=n && (2*i-k+1>0) && (v[k]+v[2*i-k+1]==sum))
k++;
k--;
z[i]=k-i;
if(k>R)
{
C=i;
R=k;
}
}
else z[i]=z[aux];
// cout<<z[i]<<" ";
ans+=z[i];
}
out<<ans;
return 0;
}