Pagini recente » Cod sursa (job #1815145) | Cod sursa (job #176503) | Cod sursa (job #64976) | Cod sursa (job #1828992) | Cod sursa (job #466788)
Cod sursa(job #466788)
#include<algorithm>
using namespace std;
#define N_MAX 100005
int a[N_MAX],n,i,j,k,s;
long long sum[N_MAX];
long long rez;
float modul(float x)
{
if(x<0)
return -x;
return x;
}
int main()
{
freopen("numarare.in","r",stdin);
freopen("numarare.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
sum[i]=a[i]+sum[i-1];
}
int lg=1,step;
for(;lg<n;lg<<=1);
for(k=1;k<n;k++)
{
i=k; j=k+1; s=a[i]+a[j]; //rez++;
for(step=lg;step;step>>=1)
{
if(j+step>n||i-step<1)
continue;
if(modul((float)(sum[j+step]-sum[i-step-1])/(j-i+1+2*step)-(float)(a[j]+a[i])/2)<=0.0000001)
j+=step,i-=step;
}
rez=rez+k-i+1;
/*while(i>1&&j<n&&s==a[i]+a[j])
i--,j++,rez++;*/
}
/*printf("100000\n");
for(i=1;i<=100000;i++)
printf("%d ",i);
*/
printf("%lld\n",rez);
return 0;
}