Pagini recente » Cod sursa (job #369315) | Cod sursa (job #7074) | Cod sursa (job #2115990) | Cod sursa (job #3292390) | Cod sursa (job #353405)
Cod sursa(job #353405)
#include <stdio.h>
#include <stdlib.h>
int v[801],n;
int comp(const void *a, const void *b){
return *(int*)a-*(int*)b;
}
int caut_y(int poz,int c){
int m,st,dr;
st=poz;
dr=n;
while(st<=dr){
m=(st+dr)/2;
if(v[m]<=c && (v[m+1]>c || m==n))
return m;
else if(v[m]<=c) st=m+1;
else dr=m-1;
}
return -1;
}
int main(){
int i,j,x,y,sol=0;
freopen("nrtri.in","r",stdin);
freopen("nrtri.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&v[i]);
v[0]=0;
qsort(v,n+1,sizeof(v[0]),comp);
for(i=1;i<n-1;i++)
for(j=i+1;j<n;j++){
y=caut_y(j+1,v[i]+v[j]);
if(y>0) sol+=y-j;
}
printf("%d",sol);
return 0;
}