Pagini recente » Cod sursa (job #51248) | Cod sursa (job #1415228) | Cod sursa (job #764324) | Cod sursa (job #3265469) | Cod sursa (job #468080)
Cod sursa(job #468080)
#include <cstdio>
#define infile "numarare.in"
#define outfile "numarare.out"
#define MaxN 100024
int a[MaxN], sol[MaxN];
int N;
void read()
{
int i;
scanf("%d",&N);
for(i=1;i<=N;i++)
{
scanf("%d",&a[i]);
sol[i]=1;
}
}
int maxim(int a,int b)
{
if(a>b)
return a;
return b;
}
void solve()
{
int i,l,s;
sol[1]=1; sol[N]=0;
for(i=2;i<N;i++)
{
l=sol[i]; s=a[i]+a[i+1];
while(i-l>=0 && i+l<=N && a[i-l+1]+a[i+l]==s)
{
if(l%2==0)
sol[i+l/2]=maxim(l/2,sol[i+l/2]);
l++;
}
sol[i]=l-1;
}
}
void write()
{
int i;
for(i=1;i<N;i++)
sol[N]+=sol[i];
printf("%d\n",sol[i]);
}
int main()
{
freopen(infile,"r",stdin);
freopen(outfile,"w",stdout);
read();
solve();
write();
fclose(stdin);
fclose(stdout);
return 0;
}