Pagini recente » Cod sursa (job #1962492) | Cod sursa (job #217450) | Cod sursa (job #616033) | Cod sursa (job #2974277) | Cod sursa (job #3319840)
#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;
}