Pagini recente » Cod sursa (job #565506) | Cod sursa (job #1349254) | Cod sursa (job #854478) | Cod sursa (job #2239296) | Cod sursa (job #457185)
Cod sursa(job #457185)
#include<stdio.h>
#include<algorithm>
using namespace std;
long n;
long v[801];
long cautbin1 (long x , long dr)
{
long st , m,aux;
st=1;
while (st<=dr)
{
m=(st+dr)>>1;
if (v[m]<x)
dr=m-1;
else
{
st=m+1;
if (v[m]>=x)
aux=m;
}
}
return aux;
}
long cautbin2 (long x , long st)
{
long dr ,m , aux ;
dr=n;
while (st<=dr)
{
m=(st+dr)>>1;
if (v[m]<=x)
st=m+1;
else
{
aux=m;
dr=m-1;
}
}
return aux;
}
int main()
{
long i,j,s1,s2,m1,m2,num=0;
freopen("nrtri.in","r",stdin);
freopen("nrtri.out","w",stdout);
scanf("%ld",&n);
for (i=1;i<=n;i++)
scanf("%ld",&v[i]);
sort(v+1,v+n+1);
for (i=1;i<=n;i++)
for (j=i+1;j<=n;j++)
{
s1=v[i]+v[j];
s2=v[j]-v[i];
m1=cautbin1(s2,i);
m2=cautbin2(s1,j);
if (m1!=i && m1!=j && m1<=n && m1>=0 && v[m1]<=s2)
num++;
if (m2!=i && m2!=j && m2<=n && m2>=0 && v[m2]>=s1)
num++;
}
printf("%ld\n",num);
return 0;
}