Pagini recente » Cod sursa (job #1949975) | Cod sursa (job #2883156) | Cod sursa (job #196248) | Cod sursa (job #1601780) | Cod sursa (job #2062161)
#include <bits/stdc++.h>
using namespace std;
inline void Boost() {
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
}
typedef long long int ll;
typedef long double ld;
ifstream fin("triang.in");
ofstream fout("triang.out");
const int NMax = 1505;
const double eps = 1e-6;
pair < double, double > v[NMax];
pair < double, double > aux[NMax];
double power(const double &x) {
return (x * x);
}
double dist(const pair < double, double > &a, const pair < double, double > &b) {
return sqrt(power(a.first - b.first) + power(a.second - b.second));
}
int cr = 0;
bool cmp(const pair < double, double > &a, const pair < double, double > &b) {
double distA = dist(v[cr], a);
double distB = dist(v[cr], b);
if(abs(distA - distB) > eps) return distA < distB;
double tnA = atan2(v[cr].second - a.second, v[cr].first - a.first);
double tnB = atan2(v[cr].second - b.second, v[cr].first - b.first);
return tnA < tnB;
}
int main() {
Boost();
int n;
fin >> n;
for(int i = 1; i <= n; ++i) {
double a, b;
fin >> a >> b;
v[i] = {a, b};
aux[i] = v[i];
}
int ans = 0;
for(int i = 1; i <= n; ++i) {
cr = i;
sort(aux + 1, aux + n + 1, cmp);
for(int j = 3; j <= n; ++j) {
double dA = dist(v[cr], aux[j - 1]);
double dB = dist(v[cr], aux[j]);
double dC = dist(aux[j - 1], aux[j]);
if(abs(dA - dB) <= eps && abs(dA - dC) <= eps && abs(dB - dC) <= eps) ++ans;
}
}
fout << ans / 3;
return 0;
}