Pagini recente » Cod sursa (job #2104617) | Cod sursa (job #2220346) | Cod sursa (job #654467) | Cod sursa (job #1139925) | Cod sursa (job #1738291)
#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<=2*n+1;i++)
{
if(i%2==1) continue;
in >> a[i];
}
a[0] = -7*INF;
a[2*n+2] = 7*INF;
n = 2*n+2;
c = 1;
r = 1;
a[1] = 0;
for(int i=3;i<n-1;i+=2)
{
m = 2*c-i;
if(i<r) p[i] = min(r-i,p[m]);
else p[i] = 1;
a[i] = a[i-1]+a[i+1];
while(a[i+p[i]+2]+a[i-p[i]-2]==a[i])
{
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]==1) ct+=p[i];
else if(p[i]>=2) ct+=2;
}
out <<ct;
return 0;
}