Cod sursa(job #293077)
| Utilizator | Data | 31 martie 2009 22:09:21 | |
|---|---|---|---|
| Problema | Numarare triunghiuri | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.66 kb |
#include <stdio.h>
#include <algorithm>
using namespace std;
int i,j,l,n,nr,a[801],m;
int 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++;
s=m+1;
}
else
s=m+1;
}
return -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;
}
