Pagini recente » Cod sursa (job #2296776) | Cod sursa (job #2453053) | Cod sursa (job #2453338) | Cod sursa (job #2267569) | Cod sursa (job #1738295)
#include <iostream>
#include <fstream>
#define INF 100008
#define NMAX 100000
using namespace std;
int a[2*NMAX+3],n,c,m;
long long p[2*NMAX+3],r,ct;
ifstream in("numarare.in");
ofstream out("numarare.out");
int main()
{
in >> n;
for(int i=1;i<n;i++)
{
in >> a[i];
}
a[0] = -7*INF;
a[n+1] = 7*INF;
n = n+1;
c = 1;
r = 1;
a[1] = 0;
for(int i=1;i<n;i++)
{
m = 2*c-i;
if(i<r) p[i] = min(r-i,p[m]);
else p[i] = 1;
while(a[i+p[i]+2]+a[i-p[i]-2]==a[i-1]+a[i+1])
{
p[i]+=1;
}
if(i+p[i]>r)
{
c = i;
r = p[i]+i;
}
}
for(int i=1;i<n;i++)
{
//cout << p[i] << " " ;
if(p[i]>0) ct+=p[i];
}
out <<ct;
return 0;
}