Cod sursa(job #574493)
| Utilizator | Data | 7 aprilie 2011 11:16:40 | |
|---|---|---|---|
| Problema | Numarare triunghiuri | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.5 kb |
#include<stdio.h>
#include<algorithm>
using namespace std;
int n,nr=0,x[805],k;
int cautbin(int a)
{
int pas=1<<9,i;
for(i=0;pas;pas/=2)
if (i+pas<=n && x[i+pas]<=a)
i+=pas;
return i;
}
int main()
{
int i,j;
freopen("nrtri.in","r",stdin);
freopen("nrtri.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&x[i]);
sort(x+1,x+1+n);
for(i=1;i<=n-1;i++)
for(j=i+1;j<=n;j++)
{
k=cautbin(x[i]+x[j]);
nr=nr+(k-j);
}
printf("%d",nr);
}
