Cod sursa(job #1771641)

Utilizator pionierul22aNa LiZa pionierul22 Data 5 octombrie 2016 20:35:28
Problema Numarare triunghiuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>
using namespace std;
ifstream fin("nrtri.in");
ofstream fout("nrtri.out");
int i,n,m,j,s,v[10000],maxi,nr,aux;
int cautare(int p, int u)
{
  int m;
  m=(p+u)/2;
  while (p<=u){
      if ((v[m]<=v[i]+v[j] && v[m+1]>v[i]+v[j]) || (v[m]<=v[i]+v[j] && m==n))
      {
          if(m!=i && m!=j)
        return 1;
      return 0;
      }
   else if (v[m]<=v[i]+v[j] && v[m+1]<=v[i]+v[j]) {
    p=m+1;
    m=(p+u)/2;
   }
   else {
    u=m-1;
    m=(p+u)/2;
    }
  }
  return 0;
}
int main()
{
   fin>>n;
   for(i=1;i<=n;i++)
   fin>>v[i];
int ok;
   do
   {
       ok=0;
       for(i=1;i<n;i++)
        if(v[i]>v[i+1])
       {
           aux=v[i];
           v[i]=v[i+1];
           v[i+1]=aux;
           ok=1;
       }

   }while(ok==1);

   for (i=1;i<=n-1;++i)
    for (j=i;j<=n;++j){
            if(i!=j)
         if(cautare(1,n)==1)
            nr++;

    }
fout<<nr;

    return 0;
}