RROUNDS - Colliding Race

Problem LInk : CodeChef: Practical coding for everyone

Initially two people start from the same point of circular track and move in same direction. But as one has more speed than other so before completion of x rounds person with higher speed will cross the other person some y times.

When person with more speed relative to other person complete one round of track then it will must cross the person to move further.

Relative speed = abs(speed of 1st – speed of 2nd)

Let person with higher speed = v1
Let person with lower speed = v2

As person with higher speed have to cover x rounds so total time take:
Total time = x * Circumference of track / v1

In this total time how many time 1st person cover full track w.r.t 2nd persom is:
(relative speed * total time) / circumference of circle

#include <bits/stdc++.h>
using namespace std;
#define ll long long int
#define MOD 1000000007

int main()
{
    ll test;
    cin >> test;
    while (test--)
    {
        ll a, b, x, r;
        cin >> x >> r >> a >> b;
        ll relative_speed = abs(a - b);
        ll max_speed = max(a, b);
        ll ans = 0;
        //if both are at the end point when person with higher speed complete x    	  
        //rounds then crossing wil not occur so substract -1
        if ((x * relative_speed) % max_speed == 0)
        {
            ans--;
        }
        ans += ((x * relative_speed) / max_speed);
        cout << ans << endl;
    }
    return 0;
}
1 Like

Thank you for the explanation.