Pagini recente » Cod sursa (job #1013719) | Cod sursa (job #1766705) | Cod sursa (job #65092) | Cod sursa (job #1157724) | Cod sursa (job #562217)
Cod sursa(job #562217)
#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!=0;pas/=2)
if(i+pas<=n && v[i+pas]<=p+q)
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>j)
nrtri+=k-j;
}
printf("%d",nrtri);
}