Problem
: Catch-22
A
robot is programmed to move forward F meters and backwards again, say B meters,
in a straight line. The Robot covers 1 meter in T units of time. On Robot's
path there is a ditch at a distance FD from initial position in forward direction
as well as a ditch at a distance BD from initial position in backward
direction. This forward and backward movement is performed repeatedly by the
Robot.
Your task is to calculate amount of time taken, before the Robot falls in either ditch, if at all it falls in a ditch.
Your task is to calculate amount of time taken, before the Robot falls in either ditch, if at all it falls in a ditch.
Input
Format:
First line contains total number of test cases, denoted by N
Next N lines, contain a tuple containing 5 values delimited by space
F B T FD BD, where
First line contains total number of test cases, denoted by N
Next N lines, contain a tuple containing 5 values delimited by space
F B T FD BD, where
1.
F denotes forward displacement in
meters
2.
B denotes backward displacement
in meters
3.
T denotes time taken to cover 1
meter
4.
FD denotes distance from Robot's
starting position and the ditch in forward direction
5.
BD denotes distance from Robot's
starting position and the ditch in backward direction
Output
Format:
For each test case print time taken by the Robot to fall in the ditch and also state which ditch he falls into. Print F for forward and B for backward. Both the outputs must be delimited by whitespace
For each test case print time taken by the Robot to fall in the ditch and also state which ditch he falls into. Print F for forward and B for backward. Both the outputs must be delimited by whitespace
OR
Print No Ditch if the Robot does not fall in either ditch
Print No Ditch if the Robot does not fall in either ditch
Constraints:
First
move will always be in forward direction
1
<= N <= 100
forward
displacement > 0
backward
displacement > 0
time
> 0
distance
of ditch in forward direction (FD) > 0
distance
of ditch in backward direction (BD) > 0
All
input values must be positive integers only
Sample
Input and Output
SNo.
|
Input
|
Output
|
1
|
3 9 4 3 13 10 9 7 1 11 13 4 4 3 8 12 |
63 F 25 F No Ditch |
2
|
5 8 4 7 11 22 4 5 4 25 6 4 9 3 6 29 7 10 6 24 12 10 10 1 9 7 |
133 F 216 B 231 B 408 B 9 F |
Solution in C++:
#include<iostream>
#define cout std::cout
#define cin std::cin
//using namespace std;
int main()
{
int var1;
cin >> var1;
while (var1--)
{
long long int front, back, tunit, fd, bd;
long long int tcount=0,count=1,dish=0;
cin >> front >> back >> tunit >> fd >> bd;
if (front == back)
{
if (fd > front)
cout << "No Ditch\n";
else
cout << fd *tunit << " F\n";
}
else if (front>back || (back>front && fd<=front))
{
while (count)
{
if (!(dish++ % 2))
{
if (front < fd)
{
fd = fd - front;
tcount = tcount + front;
}
else
{
tcount = tcount + fd;
flag = 0;
}
}
else
{
fd = fd + back;
tcount = tcount + back;
}
}
cout << tcount*tunit<<" F\n";
}
else if (back>front)
{
while (count)
{
if ((dish++ % 2))
{
if (back < bd)
{
bd = bd - back;
tcount = tcount + back;
}
else
{
tcount = tcount + bd;
flag = 0;
}
}
else
{
bd = bd + front;
tcount = tcount + front;
}
}
cout << tcount*tunit << " B\n";
}
}
return 0;
}
No comments:
Post a Comment