Pagini recente » Cod sursa (job #2606250) | Cod sursa (job #2101278) | Cod sursa (job #56029) | Cod sursa (job #908311) | Cod sursa (job #2226509)
#include <cstdio>
#include <algorithm>
#define min(a, b) (a<b?a:b)
using namespace std;
int N, List[805], i, S;
int Binary(int st, int dr, int Find){
int inplus=st-1, mij;
while(st<dr){
mij=(st+dr)/2;
if(Find==List[mij])return mij-inplus;
if(Find>List[mij]) st=mij+1;
else dr=mij-1;
}
int R=min(st, dr);
if(Find>List[R])inplus--;
else if(Find<List[R])inplus++;
return R-inplus;
}
int main()
{
freopen("nrtri.in", "r", stdin);
freopen("nrtri.out", "w", stdout);
scanf("%d", &N);
for(i=1; i<=N; i++) scanf("%d", &List[i]);
sort(List+1, List+N+1);
for(i=2; i<=N-1; i++)S+=Binary(i+1, N, List[i]+List[i-1]);
printf("%d", S);
return 0;
}