Pagini recente » Cod sursa (job #2799226) | Cod sursa (job #2683783) | Cod sursa (job #1544165) | Cod sursa (job #190885) | Cod sursa (job #58645)
Cod sursa(job #58645)
#include<stdio.h>
#include<stdlib.h>
int a, b, j, v[801], nr, n;
int comp(const void*x, const void*y)
{
int *xx=(int*)x, *yy=(int*)y;
int xxx=*xx, yyy=*yy;
if (xxx<yyy) return -1;
if (xxx>yyy) return 1;
return 0;
}
int bs(){
int li=j+1, ls=n, t;
while (li<=ls){
t=(li+ls)/2;
if (v[t]>a+b)
ls=t-1;
else
if (v[t+1]>a+b||t==n)
return t;
else
li=t+1;
}
return 0;
}
int main()
{
freopen("nrtri.in","r",stdin);
freopen("nrtri.out","w",stdout);
int i, poz;
scanf("%d",&n);
if (n==1||n==2)
printf("0\n");
else {
for (i=1;i<=n;i++)
scanf("%d",&v[i]);
qsort(v,n+1,sizeof(v[0]),comp);
v[n+1]=30001;
for (i=1;i<n-1;i++)
for (j=i+1;j<n;j++)
{
a=v[i];
b=v[j];
poz=bs();
if (poz!=0)
nr+=poz-j;
}
printf("%d\n",nr);
}
fclose(stdin);
fclose(stdout);
return 0;
}