QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#617303 | #8022. Walker | Okuchiri | WA | 0ms | 3888kb | C++20 | 2.5kb | 2024-10-06 14:48:26 | 2024-10-06 14:48:27 |
Judging History
answer
#include<bits/stdc++.h>
#define ll long long
#define ld long double
#define mod 998244353
using namespace std;
ld n,a,b,v1,v2;
void work()
{
cin>>n>>a>>v1>>b>>v2;
if(a>b)
{
swap(a,b);
swap(v1,v2);
}
ld a1=a,b1=n-b;
ld ans=min((a+n)/v1,(b+n)/v2);
ans=min({(n-a+n)/v1,(n-b+n)/v2,ans});
ans=min(ans, max(a/v1, min((2*(b-a)+n-b)/v2,(2*(n-b)+b-a)/v2)));
ans=min(ans, max((n-b)/v2,min((2*a+b-a)/v1,(2*(b-a)+a)/v2)));
if(2*a1<=n-2*b1)
{
ld x=(2*v1*b1+(b-a1)*v1-v2*a1)/(2*v2+v1);
if(x>=0&&x<=a1)
{
ans=min(ans,(a1+2*x)/v1);
}
ans=min(ans,max(3*a1/v1,(2*b1+b-2*a1)/v2));
x=(2*b1*v1+(b-a1)*v1-2*a1*v2)/(v1+v2);
if(x>=a1&&x<=b-a-b1)
{
ans=min(ans,(2*a1+x)/v1);
}
ans=min(ans,max(3*b1/v2,(2*a1+b-a-b1)/v1));
x=(v1*b1+2*(b-a1)*v1-2*a1*v2)/(v2+2*v1);
if(x>=b-a-b1&&x<=b-a)
{
ans=min(ans,(2*a1+x)/v1);
}
}
else if(a+a1<=b&&n-2*b1>=a)
{
ld x=(2*v1*b1+(b-a1)*v1-v2*a1)/(2*v2+v1);
if(x>=0&&x<=b-a-b1)
{
ans=min(ans,(a1+2*x)/v1);
}
ans=min(ans,max(3*b1/v2,(2*(b-a-b1)+a)/v1));
x=(v1*b1+2*(b-a1)*v1-v2*a1)/(2*v2+2*v1);
if(x>=b-a-b1&&x<=a1)
{
ans=min(ans,(a1+2*x)/v1);
}
ans=min(ans,max(3*a1/v1,(2*(b-2*a1)+b1)/v2));
x=(v1*b1+2*(b-a1)*v1-2*a1*v2)/(v2+2*v1);
if(x>=a1&&x<=b-a)
{
ans=min(ans,(x+2*a1)/v1);
}
}
else if(b-b1>=a)
{
ld x=(2*v1*b1+v1*(b-a)-a1*v2)/(2*v2+v1);
if(x>=0&&x<=b-a-b1)
{
ans=min(ans,(2*x+a1)/v1);
}
ans=min(ans,max((2*(b-a-b1)+a1)/v1,3*b1/v2));
x=(v1*b1+2*(b-a)*v1-v2*a1)/(2*v2+2*v1);
if(x>=b-a-b1&&x<=b-a)
{
ans=min(ans,(2*x+a1)/v1);
}
}
else if(a1*2<=b)
{
ld x=(2*v1*b1+v1*(b-a)-a1*v2)/(2*v2+v1);
if(x>=0&&x<=a1)
{
ans=min(ans,(2*x+a1)/v1);
}
ans=min(ans,max(3*a1/v1,(2*(b-2*a1)+b1)/v2));
x=(v1*b1+2*(b-a)*v1-2*v2*a1)/(v2+2*v1);
if(x>=a1&&x<=b-a)
{
ans=min(ans,(2*a1+x)/v1);
}
}
cout<<fixed<<setprecision(6)<<ans<<'\n';
}
int main()
{
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int T=1;
cin>>T;
while(T--)
{
work();
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3888kb
input:
2 10000.0 1.0 0.001 9999.0 0.001 4306.063 4079.874 0.607 1033.423 0.847
output:
5001000.000000 3827.837001
result:
ok 2 numbers
Test #2:
score: 0
Accepted
time: 0ms
memory: 3840kb
input:
1 10.0 1.0 10.0 9.0 0.1
output:
1.100000
result:
ok found '1.1000000', expected '1.1000000', error '0.0000000'
Test #3:
score: 0
Accepted
time: 0ms
memory: 3876kb
input:
1 10.0 8.0 10.0 9.0 0.1
output:
1.200000
result:
ok found '1.2000000', expected '1.2000000', error '0.0000000'
Test #4:
score: -100
Wrong Answer
time: 0ms
memory: 3884kb
input:
1 10.0 8.0 0.1 9.0 10
output:
1.000000
result:
wrong answer 1st numbers differ - expected: '1.1000000', found: '1.0000000', error = '0.0909091'