Pagini recente » Cod sursa (job #1162737) | Cod sursa (job #747209) | Cod sursa (job #1417227) | Cod sursa (job #3158509) | Cod sursa (job #1645023)
#include<cstdio>
#include<algorithm>
using namespace std;
int i, j, nr, n, a[805], k;
inline int cauta_binar(int limita){
int st=j+1, dr=n, mij, sol;
//a[x]<=limita
if (a[st]>limita) return st-1;
if (a[dr]<=limita) return dr;
sol=0;
for (mij=st+(dr-st)/2;st<dr;mij=st+(dr-st)/2) {
if (limita>=a[mij]) {sol=mij; st=mij+1;}
else dr=mij-1;
}
if ((a[st]<=limita)&&(st>sol)) sol=st;
return sol;
}
int main(){
freopen("nrtri.in","r",stdin);
freopen("nrtri.out","w",stdout);
scanf("%d", &n);
for (i=1;i<=n;i++) scanf("%d", &a[i]);
sort(a+1, a+n+1); nr=0;
for (i=1;i<n;i++) for (j=i+1;j<=n;j++) {
k=cauta_binar(a[i]+a[j]);
nr+=(k-j);
}
printf("%d\n", nr);
return 0;
}