Pagini recente » Cod sursa (job #2735146) | Cod sursa (job #449615) | Cod sursa (job #332480) | Cod sursa (job #2155031) | Cod sursa (job #293119)
Cod sursa(job #293119)
#include <stdio.h>
#include <algorithm>
using namespace std;
int i,j,l,n,nr,a[801],m;
void cautbin(int s,int d)
{
int m;
while(s<=d)
{
m=(s+d)/2;
if(a[i]+a[j]>=a[m] && a[i]+a[m]>=a[j] && a[j]+a[m]>=a[i])
{
nr++;
int x=m-1;
// printf("%d %d\n",m,x);
// printf("%d %d %d\n",a[i],a[j],a[m]);
for(x=m-1;x>=s;x--)
if(a[i]+a[j]>=a[x] && a[i]+a[x]>=a[j] && a[j]+a[x]>=a[i])
nr++;
// printf("%d %d %d\n",a[i],a[j],a[x]);
s=m+1;
}
else
if(a[i]+a[j]<=a[m])
d=m-1;
else
s=m+1;
}
}
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);
for(i=1;i<=n;i++)
for(j=i+1;j<=n;j++)
cautbin(j+1,n);
printf("%d",nr);
return 0;
}