Tìm điểm thuộc 1 đoạn gần với một điểm cho trước nhất (Thuật toán chặt nhị phân)
// Tìm điểm thuộc 1 đoạn gần với một điểm cho trước nhất (Thuật toán chặt nhị phân)
#include<bits/stdc++.h>
using namespace std;
typedef pair<double, double> Diem;
#define x first
#define y second
double const eps=1e-4;
double bpkc(Diem A, Diem B){ //binh phuong khoang cach
return (A.x-B.x)*(A.x-B.x)+(A.y-B.y)*(A.y-B.y);
}
Diem tim(Diem A, Diem B, Diem M){ // tim diem tren AB gan diem M nhat
while(abs(A.x-B.x)> eps or abs(A.y-B.y)>eps){
Diem C = {(A.x+B.x)/2, (A.y+B.y)/2}; // make pair{(A.x+B.x)/2, (A.y+B.y)/2}
bpkc(M, A) > bpkc(M,B) ? A=C: B=C;
}
return A;
}
int main(){
Diem A,B,C,M;
cin>>A.x>>A.y>>B.x>>B.y>>M.x>>M.y;
cout<<setprecision(4)<<fixed<<N.x<<" "<<N.y;
}