Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<vector>
- using namespace std;
- vector<int>left_end;
- vector<int>right_end;
- int x, y;
- int n, c;
- bool res;
- vector<int>coord;
- vector<int>speed;
- bool cross_search(long double t)
- {
- for (int i = 0; i < n; i++)
- {
- x = coord[i] - speed[i] * t;
- left_end.push_back(x);
- y = coord[i] + speed[i] * t;
- right_end.push_back(y);
- }
- int maxi = left_end[0];
- int mini = right_end[0];
- for (int i = 1; i < n; i++)
- {
- if (left_end[i] > maxi)
- maxi = left_end[i];
- }
- for (int i = 1; i < n; i++)
- {
- if (right_end[i] < mini)
- mini = right_end[i];
- }
- if (maxi <= mini)
- return true;
- else
- return false;
- }
- int main()
- {
- cin >> n;
- coord.resize(n);
- speed.resize(n);
- left_end.resize(n);
- right_end.resize(n);
- for (int i = 0; i < n; i++)
- {
- cin >> c;
- coord.push_back(c);
- }
- for (int i = 0; i < n; i++)
- {
- cin >> c;
- speed.push_back(c);
- }
- double l, r, m;
- l = 0;
- r = 1000000000;
- while ((l - r - 1) > 0,0000001)
- {
- m = (l + r) / 2;
- res = cross_search(m);
- if (res)
- r = m;
- else
- l = m;
- }
- cout << r;
- return(0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement