➤ Problem Link : TRICKTRT
👉 Hint : Use binary search technique
✅ C++ Solution :
#include<bits/stdc++.h> using namespace std; #define ll long long int double f(double pnt,vector<pair<double,double> > &v,int n) { double d,maxi=0; for(int i=0;i<n;i++) { double p1=pow(v[i].first-pnt,2); double p2=pow(v[i].second,2); double sum=sqrt(p1+p2); maxi=max(sum,maxi); } return maxi; } int main() { int n; while(scanf("%d",&n) && n) { vector<pair<double,double> >v; double x,y; for(int i=0;i<n;i++) { cin>>x>>y; v.push_back(make_pair(x,y)); } double low,high,mid,prev,cur,next; low=-200001; high=200001; int k=100; while(k--) { mid=low+(high-low)/2; prev=f(mid-0.00001,v,n); cur=f(mid,v,n); next=f(mid+0.00001,v,n); if(prev<cur) high=mid; else if(next<cur) low=mid; } cout<<mid<<" "<<f(mid,v,n)<<endl; } return 0; }
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!