Cod sursa(job #1213668)

Utilizator azkabancont-vechi azkaban Data 28 iulie 2014 18:52:15
Problema Numarare triunghiuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <cstdio>
#include <algorithm>
using namespace std;

int n,A[813],i,j,sol(0);

void openIOFiles()
{
  freopen("nrtri.in","r",stdin);
  freopen("nrtri.out","w",stdout);
}

void readIFILE()
{
 scanf("%d",&n);
 for (int i=1;i<=n;++i) scanf("%d",&A[i]);
}
 
int binary(int x,int limit)
{
 int step,i(limit-1);
 for (step=1;step<n-limit;step<<=1);
 for (;step>0;step>>=1)
     if (i+step<=n && A[i+step]<=x) i+=step;
 return i;
}

int main()
{
 openIOFiles();
 readIFILE(); 
 sort(A+1,A+n+1);
 for (i=1;i<=n-2;++i)
         for (j=i+1;j<=n-1;++j) 
              if (binary(A[i]+A[j],j+1)!=j)
                    sol+=binary(A[i]+A[j],j+1)-j;
 printf("%d",sol);  
return 0;
}