Cod sursa(job #3181245)

Utilizator not_anduAndu Scheusan not_andu Data 6 decembrie 2023 18:48:42
Problema Triang Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.7 kb
/**
 * Author: Andu Scheusan (not_andu)
 * Created: 06.12.2023 18:40:47
*/

#include <bits/stdc++.h>
#pragma GCC optimize("O3")

using namespace std;

#define INFILE "triang.in"
#define OUTFILE "triang.out"

typedef long long ll;

const double DELTA = 0.001;

double distPoints(pair<double, double> a, pair<double, double> b){
    return (a.first - b.first) * (a.first - b.first) + (a.second - b.second) * (a.second - b.second);
}

double equalDistances(double d1, double d2){
    return (d2 - DELTA <= d1 && d1 <= d2 + DELTA);
}

void solve(){

    int n;
    vector<pair<double, double> > v;

    cin >> n;

    for(int i = 0; i < n; ++i){
        double a, b; cin >> a >> b; v.push_back(make_pair(a, b));
    }

    int ans = 0;

    for(int i = 0; i < n; ++i){
        for(int j = 0; j < n; ++j){
            for(int k = 0; k < n; ++k){
                if(i != j && j != k && k != i){

                    double distance1 = distPoints(v[i], v[j]);
                    double distance2 = distPoints(v[j], v[k]);
                    double distance3 = distPoints(v[k], v[i]);

                    if (
                        equalDistances(distance1, distance2) &&
                        equalDistances(distance2, distance3) &&
                        equalDistances(distance3, distance1)
                    ){
                        cout << "i: " << i << ", j: " << j << ", k: " << k << '\n'; 
                        ++ans;
                    }

                }
            }
        }
    }

    cout << ans / 6 << '\n';

}

int main(){
    
    ios_base::sync_with_stdio(false);

    freopen(INFILE, "r", stdin);
    freopen(OUTFILE, "w", stdout);

    cin.tie(nullptr);
    cout.tie(nullptr);

    solve();

    return 0;
}