Cod sursa(job #1519011)

Utilizator AlexLLupulescu Alexandru AlexL Data 6 noiembrie 2015 18:18:31
Problema Numarare triunghiuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.48 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("nrtri.in");
ofstream g("nrtri.out");
int a[801],i,j,z,n,k,kk,ok,mij;
void quickSort(int a[], int left, int right)
{
      int i = left, j = right;
      int tmp;
      int pivot = a[(left + right) / 2];
      while (i <= j)
      {
            while (a[i] < pivot)
                  i++;
            while (a[j] > pivot)
                  j--;
            if (i <= j)
            {
                  tmp = a[i];
                  a[i] = a[j];
                  a[j] = tmp;
                  i++;
                  j--;
            }
      }
      if (left < j)
            quickSort(a, left, j);
      if (i < right)
            quickSort(a, i, right);
}
int binar(int a[] ,int st, int dr)
{
    if(st>dr)
        return -1;
    else
    {
        mij=st+(dr-st)/2;
        if(a[mij]>a[i]+a[j])
            binar(a,st,mij-1);
        else
        {
            if(mij==dr)
                return mij;
            else
            {
                if(a[mij+1]>a[i]+a[j])
                    return mij;
                else
                    return binar(a,mij+1,dr);
            }
        }
    }
}

int main()
{
    f>>n;
    for(i=1;i<=n;i++)
        f>>a[i];
    quickSort(a,1,n);
    for(i=1;i<n-1;i++)
        for(j=i+1;j<n;j++)
            {
                mij=binar(a,j+1,n);
                if(mij!=-1)  kk=kk+mij-j;
            }
    g<<kk;
    return 0;
}