Cod sursa(job #1799055)

Utilizator andreiugravuFMI Andrei Zugravu andreiugravu Data 5 noiembrie 2016 18:30:51
Problema Numarare triunghiuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
//Nrtri

#include <fstream>
#include <algorithm>

using namespace std;

#define dimMax 801

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

int n, v[dimMax];
int i, j, solutie;

int cautareBinara(int p, int q, int x) {
    if(p <= q) {
        int m = (p + q)/2;
        if(x < v[m]) return cautareBinara(p, m - 1, x);
        else return cautareBinara(m + 1, q, x);
    }
    return q;
}

int main()
{
    int i;

    fin>>n;
    for(i = 1 ; i <= n ; i++)
        fin>>v[i];

    sort(v + 1 , v + n + 1);

    for(i = 1 ; i <= n-2 ; i++)
        for(j = i+1 ; j <= n-1 ; j++)
            solutie += (cautareBinara(j+1, n, v[i] + v[j]) - j);

    fout<<solutie;

    fin.close();
    fout.close();

    return 0;
}