Pagini recente » Cod sursa (job #1073542) | Cod sursa (job #58300) | Cod sursa (job #1299346) | Cod sursa (job #2252651) | Cod sursa (job #1679605)
#include <cstdio>
#include <algorithm>
using namespace std;
int i, j, n, x, answer;
int length[808];
int b_search(int left, int right, int x)
{
int best=-1, mid;
while(left<=right)
{
mid=(left+right)>>1;
if (length[mid]<=x)
{
if (mid>best) best=mid;
left=mid+1;
}
else right=mid-1;
}
return best;
}
int main()
{
freopen("nrtri.in", "rt", stdin);
freopen("nrtri.out", "wt", stdout);
scanf("%d", &n);
for(i=1; i<=n; ++i)
scanf("%d", &length[i]);
sort(length+1, length+n+1);
for(i=1; i<=n; ++i)
{
for(j=i+1; j<=n; ++j)
{
x=b_search(j+1, n, length[i]+length[j]);
if(x!=-1) answer+=x-j;
}
}
printf("%d\n", answer);
return 0;
}