PROBLEM LINK:
Setter: a0n0k0i0t
Tester: a0n0k0i0t
Editorialist: a0n0k0i0t
DIFFICULTY:
Easy
PREREQUISITES:
Basic Maths
Explanation:
Observation:
The most optimum approach to reach 0 is obivously to use 5 to subtract maximum possible times.
For a number N let X = N % 5
So,
if (X is even):
you can subtract 5 unti N is X
if(X in odd):
you can subtract 5 until N is X+5
rest of the operations will be subtracting 2.
Time complexity:
O(1) for each test case
SOLUTION
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main(){
ll T;
cin>>T;
for(int _=0;_<T;_++){
ll x,y;
cin>>x>>y;
ll cnt1=0,cnt2=0;
ll a=x/5;
cnt1+=a;
x-=a*5;
if(x%2){
x+=5;
cnt1--;
}
cnt1+=x/2;
ll b=y/5;
cnt2+=b;
y-=b*5;
if(y%2){
y+=5;
cnt2--;
}
cnt2+=y/2;
if(cnt1<cnt2)cout<<"Ram\n";
else if(cnt1>cnt2)cout<<"Shyam\n";
else cout<<"Draw\n";
}
return 0;
}