Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- #define INF 999999999
- using namespace std;
- double dist(pair<double, double> a, pair<double, double> b){
- return sqrt((a.first-b.first)*(a.first-b.first)+(a.second-b.second)*(a.second-b.second));
- }
- pair<double, double> a, b;
- int v1, v2;
- double mindist, ld, rd;
- void binary(int l, int r){
- int m1=l+(r-l)/3;
- int m2=l+2*(r-l)/3;
- if(l>=r)return;
- double md1=dist(a, make_pair(m1, 0))/v1+dist(b, make_pair(m1, 0))/v2;
- double md2=dist(a, make_pair(m2, 0))/v1+dist(b, make_pair(m2, 0))/v2;
- if(md1<mindist)mindist=md1;
- if(md1<md2){
- if(ld<m2)binary(l, m1);
- else binary(m1, m2);
- }
- else if(md1<rd)binary(m1, m2);
- else binary(m2, r);
- }
- int main()
- {
- int t;
- scanf("%d", &t);
- for(int i=0; i<t; i++){
- int xx, xx_, yy, yy_;
- scanf("%d %d %d %d %d %d", &xx, &yy, &xx_, &yy_, &v1, &v2);
- a=make_pair(xx, yy), b=make_pair(xx_, yy_);
- if(a.first==b.first){
- cout<<fixed<<setprecision(5)<<b.second/v2-a.second/v1<<endl;
- }
- else{
- int lx=a.first, rx=b.first;
- if(lx>rx)swap(lx, rx);
- ld=dist(a, make_pair(lx, 0))/v1+dist(b, make_pair(lx, 0))/v2;
- rd=dist(a, make_pair(rx, 0))/v1+dist(b, make_pair(rx, 0))/v2;
- mindist=min(ld, rd);
- binary(lx, rx);
- cout<<fixed<<setprecision(5)<<mindist<<endl;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement