Cod sursa(job #3153831)

Utilizator deliaandreeaddelia andreea deliaandreead Data 1 octombrie 2023 14:36:52
Problema Numarare triunghiuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.37 kb
#include <iostream>
#include <fstream>
#include <algorithm>

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

int v[805],rezc[805];
int cont=0,n,a,b,c;
// abc tri daca sum a 2 l > a 3a l sii daca modul de dif dintre 2 l < a 3a l
bool verif(int c){
   if(v[a]+v[b]>v[c] && v[b]+v[c]>v[a] && v[a]+v[c]>v[b]){
        int s1=v[a]-v[b];
        int s2=v[a]-v[c];
        int s3=v[b]-v[c];
        if(s1<0)
            s1=-s1;
        if(s2<0)
            s2=-s2;
        if(s3<0)
            s3=-s3;
        if(v[c]>s1 && v[b]>s2 && v[a]>s3){
           // cout<<v[a]<<" "<<v[b]<<" "<<v[c]<<endl;
            return true;
        }
        else{
            return false;
        }
   }
   else{
        return false;
   }
}

void cautbin(){
    int st=1;
    int dr=n;
   // int limst,limdr=;
    while(st<=dr){
         c=(st+dr)/2;
        if(verif(c)){
            if(rezc[c]==0){
                rezc[c]++;
                cont++;
            }
            st=c+1;
        }
        else{

            dr=c-1;
        }
    }

}



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

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

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