➤ Problem Link : 780B. The Meeting Place Cannot Be Changed
✅ C++ Solution :
#include<bits/stdc++.h>
using namespace std;
int n;
long long int arr[60002];
long long int speed[60002];
bool fun(double t)
{
double ll=-1,lr=pow(10,12);
double tl,tr;
for(int i=1;i<=n;i++)
{
tl=max(arr[i]-t*speed[i],0.0);
tr=arr[i]+t*speed[i];
if(tl > lr || tr < ll)
return 0;
ll=max(ll,tl);
lr=min(lr,tr);
// cout<<i<<" "<<ll<<" "<<lr<<" "<<endl;
}
if(tl > lr || tr < ll)
return 0;
return 1;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>arr[i];
for(int i=1;i<=n;i++)
cin>>speed[i];
double low=0,high= pow(10,12);
double mid;
int k=1000;
while(k--)
{
mid=low+(high-low)/2;
//cout<<mid<<" "<<fun(mid)<<endl;
if(fun(mid))
high=mid;
else
low=mid;
}
cout<<fixed<<setprecision(10)<<mid;
}
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!!
