Cod sursa(job #2910779)

Utilizator divadddDavid Curca divaddd Data 24 iunie 2022 23:53:59
Problema Numarare triunghiuri Scor 100
Compilator cpp-64 Status done
Runda 3_iulie Marime 0.85 kb
#include <iostream>
#include <algorithm>
#include <fstream>
#define MAX 802
using namespace std;
int n,sol,v[MAX];

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

int cb(int st, int x){
    /// 1 1 1 1 0 0 0 0
    ///       ^
    /// filtru = v[poz] <= x
    int ans = 0;
    int dr = n;
    while(st <= dr){
        int mid = (st+dr)/2;
        if(v[mid] <= x){
            ans = mid;
            st = mid+1;
        }else{
            dr = mid-1;
        }
    }
    return ans;
}

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