Pagini recente » Cod sursa (job #1154087) | Cod sursa (job #1177424) | Cod sursa (job #301858) | Cod sursa (job #552444) | Cod sursa (job #1552227)
#include <bits/stdc++.h>
using namespace std;
int v[100005];
int binarySearch(int x, int s, int n){
int step = 1<<16;
for(s--;step;step >>= 1){
if(s+step <= n && v[s+step] <= x){
s += step;
}
}
return s;
}
int main()
{
int n,m,type,x,i,ans,j,poz1,poz2;
int poz;
freopen("nrtri.in", "r", stdin);// !!! nrtri !!!
freopen("nrtri.out", "w", stdout);
scanf("%d",&n);
for(i = 1;i <= n;i++){
scanf("%d",&v[i]);
}
sort(v+1,v+n+1);
ans = 0;
for(i = 1;i <= n-2;i++){
for(j = i+1;j <= n-1;j++){
poz1 = binarySearch(v[i]+v[j], j, n);
poz2 = binarySearch(v[j]-v[i], j+1, n)+1;
if(poz1 == n && (v[n] > v[i]+v[j])){
continue;
}
ans = ans + (poz1-poz2+1);
}
}
printf("%d",ans);
return 0;
}