Who Will Win?

PROBLEM :

Gautam and Subhash are two brothers. They are similar to each other in all respects except one. They have different ways of searching. When Gautam has to search for an item from a lot, he goes through all the items one by one and stops when he finds the item. However Subhash has an entirely different and interesting way of searching. However the search works only for items which are sorted. He goes to the middle of the lot, if he finds the desired item, he stops, if not, he checks whether the middle item is smaller or larger than the required item. If larger, he repeats the same process for the first half of the lot, otherwise second half. One day, the two brothers sit in a contest in which they have to find a name out of a sorted dictionary. Whoever finds out the name first will win the contest. The audience is very eager to know who will win and hence they want you to predict.

Input:
The first line of input takes the number of test cases, T.
The next T lines take the total number of names N, followed by M the position of the name to be searched, as well as the amount of time taken for each observation by Gautam G and Subhash S.

Output:
Print 1 in case Gautam will win, 2 in case Subhash will win, 0 in case of a draw in a separate line.

Constraints:
1<=T<=100
1<=N<=1000
1<=M<=N
1<=G<=100
1<=S<=100

Example:
Input:
3
10 8 10 25
10 8 10 30
10 8 10 12

Output:
2
2
2

--------------------------------------------------------------------------------
SIMPLE c++ IMPLEMENTATION :
--------------------------------------------------------------------------------

#include<iostream>
using namespace std;

int LinearSearchCost(int n,int m,int g)
{
    return m*g ;
}
int BinarySearchCost(int n,int m,int S)
{
    int s=1 ;
    int ans=S ;
   
    while(true)
    {
        int mid=(s+n)/2 ;
       
        if(mid==m)
            return ans ;
        else if(mid>m)
        {
            n=mid-1 ;
            ans+=S ;
        }
        else
        {
            s=mid+1 ;
            ans+=S ;
        }
    }
}
int main()
{
int t ;
cin>>t ;
while(t--)
{
   int n,m,g,s ;
   cin>>n>>m>>g>>s ;
 
   int x=LinearSearchCost(n,m,g) ;
   int y=BinarySearchCost(n,m,s) ;
 
   int ans=x<y?1:2 ;
   cout<<ans<<endl ;
}
return 0;
}

--------------------------------------------------------------------------------

Comments

Popular posts from this blog

Count ways to N'th Stair(Order does not matter)

Replace all ‘0’ with ‘5’ in an input Integer

Chocolate Distribution Problem

Remove characters from the first string which are present in the second string

Primality Test ( CodeChef Problem code: PRB01 )