Pagini recente » Cod sursa (job #2055292) | Cod sursa (job #793776) | Cod sursa (job #2396171) | Cod sursa (job #2435405) | Cod sursa (job #481952)
Cod sursa(job #481952)
#include <stdio.h>
int n,a[802],sum=0;
void quicksort(int lo,int hi){
int h,i=lo,j=hi,x=a[lo+(hi-lo)/2];
do{
while(a[i]<x){i++;}
while(a[j]>x){j--;}
if(i<=j){
h=a[i];
a[i]=a[j];
a[j]=h;
i++;j--;}}while(i<j);
if(lo<j){quicksort(lo,j);}
if(i<hi){quicksort(i,hi);}
}
void bs(int lo,int p){
int hi=n,mid,er=lo-1;
while(lo<hi){
mid=lo+(hi-lo+1)/2;
if(a[mid]<=p){lo=mid;}
else{hi=mid-1;}
}
if(a[lo]<=p){sum+=lo-er;}
}
int main(){
freopen("nrtri.in","r",stdin);
freopen("nrtri.out","w",stdout);
int i,j;
scanf("%d",&n);
for(i=1;i<=n;i++){scanf("%d",&a[i]);}
quicksort(1,n);
for(i=1;i<=n-2;i++)
for(j=i+1;j<=n-1;j++)
bs(j+1,a[i]+a[j]);
printf("%d",sum);
return 0;}