Pagini recente » Cod sursa (job #3914) | Cod sursa (job #162698) | Cod sursa (job #1130007) | Cod sursa (job #2055755) | Cod sursa (job #562213)
Cod sursa(job #562213)
#include<stdio.h>
#include<stdlib.h>
int n,v[802];
int caut(int p, int q)
{
int i,pas=1<<9;
for(i=0 ; pas ; pas/=2)
if(i+pas<=n && v[i+pas]<=p+q && v[i+pas]+p>=q && v[i+pas]+q>=p)
i += pas;
return i;
}
int cmp(const void *p, const void *q)
{
int x=*(int*)p, y=*(int*)q;
if (x>y) return 1;
if (x<y) return -1;
return 0;
}
int main()
{
int i,j,nrtri=0,k;
freopen("nrtri.in","r",stdin);
freopen("nrtri.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;++i)
scanf("%d",&v[i]);
qsort(v+1,n,sizeof(v[0]),cmp);
for(i=1;i<=n;++i)
for(j=i+1;j<=n;++j)
{
k=caut(v[i],v[j]);
if (k!=0)
nrtri+=k-j;
}
printf("%d",nrtri);
}