Cod sursa(job #1777273)

Utilizator OFY4Ahmed Hamza Aydin OFY4 Data 12 octombrie 2016 10:26:30
Problema Numarare triunghiuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<fstream>
#include<algorithm>

#define nmax 810

using namespace std;

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

int n, v[nmax];

int cautbin(int val){

    int start = 0, step = (1<<10);

    for( ; step; step>>=1){

        int index = start + step;
        if(index > n )continue;
        if(v[index] <= val) start = index;
    }

    return start;
}

int main(){

    in >> n;

    int s = 0;

    for(int i = 1;i <= n;++i){

        in >> 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){

            int k = v[i] + v[j];

            int a = cautbin(k);

            if(a == i || a == j)continue;

            if(k >= v[a])
            {
                a = a - j;
                s = s + a;
            }
        }
    }

    out << s;
}