Cod sursa(job #920840)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
int a[801],i,j,k,n,nr=0,x,y;
int cautbin(int x, int n, int j)
{int lo=j,hi=n,mid;
while(lo<=hi)
{mid=(lo+hi)/2;
if(a[mid]<=x&&mid>j)
return mid;
else
lo=mid+1;
}
return 0;
}
int main()
{ifstream fin("nrtri.in");
ofstream fout("nrtri.out");
fin>>n;
for(i=1;i<=n;i++)
fin>>a[i];
sort(a+1,a+n+1);
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
{x=a[i]+a[j];
y=cautbin(x,n,j);
if(a[i]+a[j]>=a[y]&&a[i]+a[y]>=a[j]&&a[j]+a[y]>=a[i]&&y&&y>j)
nr++;
}
fout<<nr;
return 0;
}