Related Articles

Related Articles

Maximum litres of water that can be bought with N Rupees
  • Difficulty Level : Medium
  • Last Updated : 17 Apr, 2019

Given N Rupees. A liter plastic bottle of water costs A Rupees and a litre of glass bottle of water costs B Rupees. But the empty glass bottle after buying can be exchanged for C Rupees. Find the maximum liters of water which can be bought with N Rupees.

Examples:

Input: N = 10 , A = 11 , B = 9 , C = 8
Output: 2
One glass bottle can be bought and then can be returned to buy one more glass bottle

Input: N = 15 , A = 6 , B = 4 , C = 3
Output: 12

Approach: If we have at least b money then cost of one glass bottle is b – c. This means that if a ≤ (b – c) then we don’t need to buy glass bottles, only plastic ones, and the answer will be floor(n / a). Otherwise we need to buy glass bottles while we can.
So, if we have at least b money, then we will buy floor((n – c) / (b – c)) glass bottles and then spend rest of the money on plastic ones.



Below is the implementation of the above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// CPP implementation of the above approach
#include<bits/stdc++.h>
using namespace std;
  
  
void maxLitres(int budget,int plastic,int glass,int refund)
{
  
    // if buying glass bottles is profitable
    if (glass - refund < plastic)
       {
           // Glass bottles that can be bought
        int ans = max((budget - refund) / (glass - refund), 0);
  
        // Change budget according the bought bottles
        budget -= ans * (glass - refund);
  
        // Plastic bottles that can be bought
        ans += budget / plastic;
        cout<<ans<<endl;
       }
  
    // if only plastic bottles need to be bought
    else
        cout<<(budget / plastic)<<endl;
}
  
      
  
// Driver Code
int main()
{
    int budget = 10, plastic=11, glass=9, refund =  8;
    maxLitres(budget, plastic, glass, refund);
}
  
// This code is contributed by
// Surendra_Gangwar

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java implementation of the above approach 
class GFG 
{
  
    static void maxLitres(int budget, int plastic, 
                            int glass, int refund)
    {
  
        // if buying glass bottles is profitable 
        if (glass - refund < plastic)
        {
              
            // Glass bottles that can be bought 
            int ans = Math.max((budget - refund) / (glass - refund), 0);
  
            // Change budget according the bought bottles 
            budget -= ans * (glass - refund);
  
            // Plastic bottles that can be bought 
            ans += budget / plastic;
            System.out.println(ans);
        
          
        // if only plastic bottles need to be bought 
        else 
        {
            System.out.println((budget / plastic));
        }
  
    }
  
    // Driver Code 
    public static void main(String[] args) 
    {
        int budget = 10, plastic = 11, glass = 9, refund = 8;
        maxLitres(budget, plastic, glass, refund);
    }
}
  
/* This code contributed by PrinciRaj1992 */

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 implementation of the above approach
  
def maxLitres(budget, plastic, glass, refund):
  
    # if buying glass bottles is profitable
    if glass - refund < plastic:
  
        # Glass bottles that can be bought
        ans = max((budget - refund) // (glass - refund), 0)
  
        # Change budget according the bought bottles
        budget -= ans * (glass - refund)
  
        # Plastic bottles that can be bought
        ans += budget // plastic
        print(ans)
  
    # if only plastic bottles need to be bought
    else:
        print(budget // plastic)
  
# Driver Code
budget, plastic, glass, refund = 10, 11, 9, 8
maxLitres(budget, plastic, glass, refund)

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# implementation of the above approach 
using System;    
  
class GFG 
{
  
    static void maxLitres(int budget, int plastic, 
                            int glass, int refund)
    {
  
        // if buying glass bottles is profitable 
        if (glass - refund < plastic)
        {
              
            // Glass bottles that can be bought 
            int ans = Math.Max((budget - refund) / (glass - refund), 0);
  
            // Change budget according the bought bottles 
            budget -= ans * (glass - refund);
  
            // Plastic bottles that can be bought 
            ans += budget / plastic;
            Console.WriteLine(ans);
        
          
        // if only plastic bottles need to be bought 
        else
        {
            Console.WriteLine((budget / plastic));
        }
  
    }
  
    // Driver Code 
    public static void Main(String[] args) 
    {
        int budget = 10, plastic = 11, glass = 9, refund = 8;
        maxLitres(budget, plastic, glass, refund);
    }
}
  
// This code contributed by Rajput-Ji

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP implementation of the above approach
  
function maxLitres($budget, $plastic
                   $glass, $refund)
{
  
    // if buying glass bottles is profitable
    if ($glass - $refund < $plastic)
    {
        // Glass bottles that can be bought
        $ans = max((int)($budget - $refund) / 
                        ($glass - $refund), 0);
  
        // Change budget according the bought bottles
        $budget -= $ans * ($glass - $refund);
  
        // Plastic bottles that can be bought
        $ans += (int)($budget / $plastic);
        echo $ans . "\n";
    }
  
    // if only plastic bottles need to be bought
    else
        echo (int)($budget / $plastic) . "\n";
}
  
// Driver Code
$budget = 10;
$plastic = 11;
$glass = 9;
$refund = 8;
maxLitres($budget, $plastic
          $glass, $refund);
  
// This code is contributed by mits
?>

chevron_right


Output:

2

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up
Recommended Articles
Page :