fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. using ll = long long ;
  4. using ld = long double;
  5.  
  6. bool IsThisTimePossible(vector<ld> &pos , vector<ld> &vel , ld mid)
  7. {
  8. int n = pos.size();
  9. vector<ld> start(n) , end(n);
  10. for (int i = 0; i < n; i++)
  11. {
  12. start[i] = pos[i] - (vel[i] * mid);
  13. end[i] = pos[i] + (vel[i] * mid);
  14. }
  15. if(*min_element(end.begin() , end.end()) >= *max_element(start.begin() , start.end()))
  16. {
  17. return true;
  18. }
  19. else;
  20. {
  21. return false;
  22. }
  23. }
  24.  
  25. int main()
  26. {
  27. int n; cin >>n; vector<ld> pos(n);vector<ld> vel(n);
  28. for (int i = 0; i < n; i++)
  29. {
  30. cin >> pos[i] >> vel[i];
  31. }
  32. ld l = 0 , h = 1000000001 , mid;
  33. for (int i = 0; i < 50; i++)
  34. {
  35. mid = (l+h)/2;
  36. if(IsThisTimePossible(pos,vel,mid))
  37. {
  38. h = mid;
  39. }
  40. else
  41. {
  42. l = mid;
  43. }
  44. }
  45. cout << fixed << setprecision(7) << mid;
  46. }
Success #stdin #stdout 0.01s 5324KB
stdin
Standard input is empty
stdout
0.0000009