Cod sursa(job #1520309)

Utilizator MadalinaDragomirFMI Dragomir Madalina MadalinaDragomir Data 8 noiembrie 2015 16:33:26
Problema Numarare triunghiuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include<fstream>

using namespace std;
int v[800],i,j,st,N,dr,nr=0;
void quick(int v[], int st, int dr)
{
   int i=st, j=dr, m=(st+dr)/2, pivot=v[m];
   while(i<=j)
{while(v[i]<pivot)
    i++;
 while(v[j]>pivot)
    j--;
 if(i<=j)
{int aux=v[i];
 v[i]=v[j];
 v[j]=aux;
 i++;
 j--;}
}
if(st<j)
quick(v,st,j);
if(i<dr)
quick(v,i,dr);
}

int main()
{
    ifstream f("nrtri.in");
    ofstream g("nrtri.out");
    f>>N;
    for(i=1;i<=N;i++)
    f>>v[i];
    quick(v,1,N);
    for(i=1;i<=N-2;i++)
        for(j=i+1;j<=N-1;j++)
        {
            st=j;
            dr=N+1;
            while(dr-st!=1)
            {
                int m=(st+dr)/2;
                if(v[m]<=v[i]+v[j])
                    st=m;
                else dr=m;
            }
            nr=nr+dr-j-1;
        }
        g<<nr;
        return 0;
}