Cod sursa(job #234680)

Utilizator eugen.nodeaEugen Nodea eugen.nodea Data 21 decembrie 2008 18:17:57
Problema Numarare triunghiuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
//http://infoarena.ro/problema/nrtri
#include <stdio.h>

int N, L[801];
int BS(int i, int j, int x)
{
  int m,poz=0;
  while (i<=j) {
   m=i+(j-i)/2;
   if (L[m]<=x) poz=m,i=m+1;
	   else j=m-1;
  }
  return poz;
}
int main()
{
  int i,k,ok,a,j,c;
  freopen("nrtri.in","r",stdin);
  freopen("nrtri.out","w",stdout);
  scanf("%d",&N);
  for (i=1;i<=N;++i)
   scanf("%d",&L[i]);
  k=N;
  do{
      ok=1;
      for (i=1;i<k;i++)
       if (L[i]>L[i+1]) L[0]=L[i],L[i]=L[i+1], L[i+1]=L[0],ok=0;
      k--;
  }while (!ok);
  k=0;
  for (i=1;i<N-1;i++)
    for (j=i+1;j<N;j++) {
       c=L[i]+L[j];
       a=BS(j+1,N,c);
       if (a>j) k+=(a-j);
      }
  printf("%d",k);
  return 0;
}