Cod sursa(job #490231)
Utilizator | Tanase Alexandru tase | Data | 5 octombrie 2010 16:48:36 |
---|---|---|---|
Problema | Numarare triunghiuri | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.48 kb |
#include<stdio.h>
#include<algorithm>
using namespace std;
int n,a[30004];
int cautbin(int x)
{
int k,pas=1<<15;
for(k=0;pas!=0;pas>>=1)
if(k+pas<=n && a[k+pas]<=x)
k+=pas;
return k;
}
int main()
{
freopen("nrtri.in","r",stdin);
freopen("nrtri.out","w",stdout);
int s=0,i,j;
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)
s=s+cautbin(a[i]+a[j])-j;
printf("%d",s);
return 0;
}