Cod sursa(job #613486)

Utilizator UgleaEduFMI - Edward UgleaEdu Data 27 septembrie 2011 19:19:01
Problema Numarare triunghiuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <iostream>
#include <conio.h>
#include <fstream>
using namespace std;
int k;
void sort(long long int v[] , int i , int j , int n )
{
 int aux;
 if( v[i] > v[j])
 {
  aux = v[i];
  v[i] = v[j];
  v[j] = aux ;
 }
 if( i < n - 1 )
 {
  if( j < n )
   sort(v , i , j+1 , n);
  else
   sort(v , i + 1 , i + 2 , n);
 }
}
int caut(long long int v[],int val ,int st,int dr)
 {
  int mijl;            
       if (dr < st)
           k = mijl;
        mijl = st + (dr - st) / 2 ;
       if (v[mijl-1] > val)
           return caut(v , val, st, mijl-1);
       else if (v[mijl] < val)
           return caut( v , val, mijl+1, dr);
       else
           return mijl ;
   }
int main()
{   
 long long int v[800];
 int n , i , j , k , tr = 0 ,var;
 fstream f("nrtri.in",ios::in);
 f>>n;
 for( i = 0 ; i < n ; i++ )
  f>>v[i];
 sort(v , 0 , 1 , n);
 for( i = 0 ; i < n ; i++ )
  for( j = i+ 1 ; j < n ; j++ )
  {
   k = caut( v , v[i]+v[j] , 1 , n);
   while( k < n )
   {
    tr++;
    k++;
   }  
  }
 fstream g("nrtri.out",ios::out); 
 g<<tr;             
     return 0 ;  
}