Cod sursa(job #2029895)

Utilizator DavconDavid Constantinescu Davcon Data 30 septembrie 2017 16:59:16
Problema Numarare triunghiuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

ifstream fin("nrtri.in");
ofstream fout("nrtri.out");

const int MAXN=800;
int v[MAXN+1];

int CautareBinara(int p1, int p2, int n)
{
    int st=p2+1, dr=n, m, sol = -1;
    int x=v[p1]+v[p2];
    while(st<=dr)
    {
        m=(st+dr)/2;
        if(v[m]>x)
            dr=m-1;
        else
        if(v[m]<=x)
        {
            sol=m;
            st=m+1;
        }
    }
    return sol;
}

int main()
{
    int n, cnt=0, x;
    fin >> n;
    for(int i=1; i<=n; i++)
        fin >> v[i];
    sort(v+1, v+n+1);
    for(int i=1; i<=n-2; i++)
        for(int j=i+1; j<=n-1; j++)
        {
            x=CautareBinara(i, j, n);
            if(x!=-1)
                cnt+=x-j;
        }
    fout << cnt;
    return 0;
}