Cod sursa(job #3154079)

Utilizator deliaandreeaddelia andreea deliaandreead Data 3 octombrie 2023 09:48:13
Problema Numarare triunghiuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <iostream>
#include <fstream>
#include <algorithm>

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

int v[805];

bool verif(int med,int a,int b){// abc tri daca sum a 2 l > a 3a l
   return v[a]+v[b]>=v[med];
}

int cautbin(int a, int b, int n){
    int rasp=b;
    int st=b+1;
    int dr=n;
    while(st<=dr){
        int med=(st+dr)/2;
        if(verif(med,a,b)){
            rasp=med;
            st=med+1;
        }
        else{
            dr=med-1;
        }
    }// v[med] e cea mai mare val pe care poate sa o ia
    //cout<<v[a]<<" "<<v[b]<<" "<<v[rasp]<<' '<<rasp-b<<endl;
    return rasp-b;
}


int main()
{
    int n;
    fin>>n;
    for(int i=1;i<=n;i++){
        fin>>v[i];
    }

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

    int cont=0;
    for( int a=1;a<=n;a++){
        for(int b=a+1;b<=n;b++){
            cont+=cautbin(a,b,n);
        }
    }
    fout<<cont;
    return 0;
}