Cod sursa(job #3319840)

Utilizator DariuzzHackerPrime Dariuzz Data 3 noiembrie 2025 14:31:29
Problema Triang Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.66 kb
#include <fstream>
#include<vector>
#include<cmath>
#include<algorithm>
#include<utility>
using namespace std;
ifstream cin("triang.in");
ofstream cout("triang.out");
bool egal(double a, double b, double eps = 1e-6) {
    return fabs(a - b) < eps;
}
bool triang (vector<pair<double,double> > &v , int poz , int n , double c1 , double c2  ){
       int st =  0     , dr = n - 1 ; 
         while(st<dr){
            int mij = (st+dr)/2;
              pair< double ,  double >  aux  = v[mij] ; 
               
                    if(egal(c1,aux.first) && egal(c2,aux.second)){
                          return true ; 
                    }else if(egal(c1,aux.first) && c2 > aux.second || c1 > aux.first ){
                        st = mij + 1 ;  
                    }else{
                         dr = mij - 1 ; 
                    }
         }
           return false ; 
}
int main() {
    int n;
    cin >> n;
    vector<pair<double, double > > v(n);
    for (int i = 0; i < n; i++)
        cin >> v[i].first >> v[i].second;

    int count = 0;
     sort( v.begin () , v.end () ) ; 
      
    for (int i = 0; i < n; i++) {
        for (int j = i + 1; j < n; j++) {
             long double c1 =  v[j].first - v[i].first  , c2 =   v[j].second - v[i].second  ;
               long double x3 = c1 /2 - sqrt(3)/2 * c2 ;
                long double y3 = c2/2 + sqrt(3)/2 * c1 ;
                if(triang(v,j,n,x3,y3))
                  count ++ ; 
                  x3 = v[i].first + c1/2 + sqrt(3)/2 *c2 ; 
                  y3 = v[i].second + c2/2 - sqrt(3)/2 *c1 ;
                if(triang(v,j,n,x3,y3))
                  count ++ ; 
        }
    }

    cout << count  << "\n";
    return 0;
}