Cod sursa(job #1772376)

Utilizator pionierul22aNa LiZa pionierul22 Data 6 octombrie 2016 18:24:35
Problema Numarare triunghiuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <fstream>
using namespace std;
ifstream fin("nrtri.in");
ofstream fout("nrtri.out");
int i,n,m,j,s,v[1000],maxi,nr,aux;
int caut(int i, int j, int n,int v[])
{
    int m, st=1,dr=n;
    while(st<=dr)
    {
        m=(st+dr)/2;

         if(m>j)
        if(v[i]<=v[j]+v[m] && v[j]<=v[m]+v[i] && v[m]<=v[i]+v[j])
                return 1;


        if(v[m]>=v[i]+v[j])
            dr=m-1;

        if(v[m]<=v[i] || v[m]<=v[j])
            st=m+1;
    }
    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-2;++i)
    for (j=i+1;j<=n-1;++j)
        if(i!=j)
       nr=nr+caut(i,j,n,v);


fout<<nr;

    return 0;
}