Pagini recente » Cod sursa (job #2960260) | Cod sursa (job #1220581) | Cod sursa (job #1969313) | Cod sursa (job #2692111) | Cod sursa (job #3200863)
#include <bits/stdc++.h>
#pragma GCC optimize ("03")
using namespace std;
#define INFILE "triang.in"
#define OUTFILE "triang.out"
typedef long double ld;
const ld EPS = 0.0001;
struct Point {
ld x;
ld y;
Point() : x(0), y(0) {}
Point(ld _x, ld _y) : x(_x), y(_y) {}
};
int n;
vector<Point> v;
ld getDistance(Point &a, Point &b){
return ((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
}
bool equalDistances(ld &distance1, ld &distance2){
return (distance1 - EPS <= distance2 && distance2 <= distance1 + EPS);
}
bool equilateralTriangle(ld &distance1, ld &distance2, ld &distance3){
return equalDistances(distance1, distance2) &&
equalDistances(distance2, distance3) &&
equalDistances(distance3, distance1);
}
void solve(){
cin >> n;
v.resize(n);
for(int i = 0; i < n; ++i){
cin >> v[i].x >> v[i].y;
}
int ans = 0;
for(int i = 0; i < n; ++i){
for(int j = i + 1; j < n; ++j){
if(i != j){
ld distance1 = getDistance(v[i], v[j]);
for(int k = j + 1; k < n; ++k){
if(k != i && k != j){
ld distance2 = getDistance(v[j], v[k]);
ld distance3 = getDistance(v[k], v[i]);
if(equilateralTriangle(distance1, distance2, distance3)) ++ans;
}
}
}
}
}
cout << ans << '\n';
}
int main(){
ios_base::sync_with_stdio(false);
freopen(INFILE, "r", stdin);
freopen(OUTFILE, "w", stdout);
cin.tie(0), cout.tie(0);
solve();
return 0;
}