Can any one tell what’s wrong in code which is very short and simple.
passing test case but overall wrong answer.
problem link:-link text
my solution:- link text
I cant believe it getting wrong for 3 times for such a basic level problem. Plz I want to know what part in code is producing wrong answer.
thanks
check for this test case, ur answer is “Draw” but actual answer will be Kefa
1
0 10 6 4 3
edit:-- line no 41 u r making error
if(cc==ck)
printf("Draw\n");
**EDIT:- ** Bro after seeing ur below answer, yes ur logic seems to be almost correct but a small mistake…
check ur else part when counter1
else // both take same steps
{
if (vel1 greater than vel2)
person1 reaches first
else
person2 reaches first
}
ok so in above given example 0 10 6 4 3
i am assuming counter in seconds
counter1 will be 1sec (6/4) and remainder is 2 more distance to cover as (6-0)%4
counter2 will be 1sec (4/3) and remainder is 1 (1 more distance to cover) as (10-6)%3
**So according to else part
counter1==counter2 //true No issue here
then chef have to cover remaining distance of 2 meter where his speed is 4 meter/sec so it will take extra 2/4= .5 sec
and kefa have to cover remaining distance of 1 meter where his speed is 3 meter/sec** which will take nearly 1/3 = .33 sec
so kefa will reach early
so Kefa should be actual answer…
but according to ur logic, whose velocity is higher will reach first…
velocity of chef is higher than kefa, chef will take less time… that’s totally wrong logic
Hint to solve above problem:–
u have to find time for each but for calculation of time u should avoid division method
if ur issue resolved accept this answer and close thread otherwise ping me
Happy Coding
1 Like
I have updated my solution link still getting WA. Now can u plz find an logical error or test case for which it fails
You have over complicated the solution :
let me try to show you your mistakes in your code…
Here is the problem…
if(cc==ck){
if(vc>vk)
printf("Chef\n");
else if(vk>vc)
printf("Kefa\n");
else
printf("Draw\n");
}
}
if cc==ck the it doesn’t mean that whose velocity is less will reach first…
#counter example…
#1
#1 11 4 2 4
#here inputs are x1 x2 x3 v1 v2
hence
x1<x3<x2
as per question
#here chef will take
(4-1)/2 = 3/2 = 1.5 secs
#while kefa will take
(11-4)/4 =7/4 = 1.75 secs
#so chef wins…
#but as per your solution kefa wins…
I have seen tons of accepted solutions all have used this logic:
suppose distance between bottle and restaurant is 10 and velocity of guy is 6
then time required will be 10/6.
while i have make use of counter i.e in how many step will guy reach to the bottle from his restuarent .
let say dis=10;
vel=6;
counter=0
while(dis greater than 0)
{
dis=dis-vel;
counter++;
}
Now based on this counter one can identify who will take more steps to reach to bottle.
if(counter1 less than counter2)
person1 reaches earlier then person2
else if (counter2 less than counter1)
person2 reaches earlier then person2
else // both take same steps
{
if (vel1 greater than vel2)
person1 reaches first
else
person2 reaches first
}
Now whats wrong in this logic can any one plz tell why im getting WA.Problem is very basic
my code gives Kefa. btw from problem constraints 1 8 11 4 2 doesn’t satisfy as kefas position should be greater then bottle and chefs position.
1 Like
actually it has very simple solution… no loops nothing…
#we should compare their time to get soln…
#time= distance/velocity
so
#let tc be time taken by chef and tk by kefa
hence
#tc is to be compared with tk
tc=dc/vc;
tk=dk/vk;
but then you may fall in problem with float values
hence let u check the sign of tc-tk
let temp = tc-tk…
hence temp = (dc/vc)-(dk/vk)…
#but this may lead to wrong answer due to float…
hence lets find
temp2 =temp*vc*vk = (dc*vk) - (dk*vc);
Now you may check that sign of temp is same as sign of temp 2…
hence finding sign of temp2 will also do…
hence the simple solution is
temp=(dc*vk)-(dk*vc);
if(temp>0)
chef
else if (temp<0)
kefa
else
draw
#note : take all data members in long long it to avoid wrong answer due to overflow…
now check my answer @code_man
wait again u made mistake while dividing with velocity.
v1 is chefs velocity
v2 is kefas velocity
Are u in hurry bro:)
there is no step concept in this question… t is not integer… it is a float… chef and kefa keeps running even when t=1.00001 ,1.00002 …
hence comparing velocity when steps are same doesn’t seem correct…
example test case:
1 11 4 2 4
here steps of both will be 2… but when you do calculations on paper then chef wins…
but according to your code kefa wins…
1 Like
okay now ?? answer was correct just forgot to change previous step
HERE is my soln link in case you need reference…
#alternate soln is edit cc==ck part in your code as…
temp=(ck*vc)-(cc*vk);
#temp>0 -> chef
#temp<0 -> kefa
#temp==0 -> draw
#remember taking long long int
you can accept my answer if it was appropriate…
Or do let me know what was inappropriate or what u didn’t liked… just for improving my communication and explaination skills…
PS: I do worry about my accept rate. As well as skills…
answer updated, check it again
@code_man Bro, my above answer is now updated, have a look