Pagini recente » Cod sursa (job #355261) | Cod sursa (job #2029403) | Cod sursa (job #169421) | Cod sursa (job #2180259) | Cod sursa (job #2582379)
#include<bits/stdc++.h>
using namespace std;
const int N=100005;
int v[N];
int p[N];
int main()
{
FILE*fin,*fout;
fin=fopen("numarare.in","r");
fout=fopen("numarare.out","w");
int n;
fscanf(fin,"%d",&n);
for(int i=1;i<=n;i++)
fscanf(fin,"%d",&v[i]);
v[0]=v[n+1]=5*N;
int c,r=0;
for(int i=1;i<n;i++){
int rad=0;
if(i<r){
rad=min(r-i-1,p[2*c-i]);
}
int ct=v[i-rad]+v[i+rad+1];
while(v[i-rad-1]+v[i+rad+2]==ct)
rad++;
p[i]=rad;
if(i+p[i]>r){
c=i;
r=i+p[i];
}
}
long long ans=0;
for(int i=1;i<n;i++){
ans+=p[i]+1;
}
fprintf(fout,"%lld",ans);
return 0;
}