Cod sursa(job #1483413)

Utilizator andreicadarCadar Andrei andreicadar Data 9 septembrie 2015 11:33:18
Problema Numarare triunghiuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.32 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("nrtri.in");
ofstream g("nrtri.out");

int n,v[801],i,s=0,c=0,j,mn,mx,nr;
void QUICKSORT(int inf,int sup)
{
  int x,i,j,t;
  i=inf;
  j=sup;
  x=v[(i+j)/2];
  do{
    while ((i<sup)&&(v[i]<x)) i++;
    while ((j>inf)&&(v[j]>x)) j--;
    if (i<=j)
    {
      t=v[i];
      v[i]=v[j];
      v[j]=t;
      i++;
      j--;
    }
  }while (i<=j);
  if (inf<j) QUICKSORT(inf,j);
  if (i<sup) QUICKSORT(i,sup);
}
int main()
{
    f>>n;
    for(i=1;i<=n;i++)
        f>>v[i];
        QUICKSORT(1,n);
        nr=0;
   for(i=1;i<=n-2;++i)
      for(j=i+1;j<=n-1;++j)
         {
            int k=j+1;
            while(v[i]+v[j]>=v[k] && k<=n)
               ++k;


            nr+=k-j-1;

         }

    g<<nr;

/*if(v[1]<v[2])
            mn=v[1],mx=v[2];
            else
            mn=v[2],mx=v[1];
        s=s+v[1]+v[2];

        for(i=3;i<=n;i++)
            if(v[i]+mn>=mx&&mn+mx>=v[i])
                c++,cout<<i<<" "<<v[i]<<mn;


    for(i=2;i<n;i++)
      {
          if(v[i]<v[i+1])
            mn=v[i],mx=v[i+1];
            else
            mn=v[i+1],mx=v[i];

        s=v[i]+v[i+1];

        for(j=i+2;j<=n;j++)
            if(v[j]+mn>=mx&&mn+mx>=v[j])
            c++;
      }*/
     // g<<c;

}