Minimum number of bottles required to fill K glasses - GeeksforGeeks

30 Sep, 2021
Given N glasses having water, and a list A of each of their capacity. The task is to find the minimum number of bottles required to fill out exactly K glasses. The capacity of each bottle is 100 units. 
Examples:  
Input: N = 4, K = 3, arr[] = {200, 150, 140, 300} Output: 5 We have to fill out exactly 3 glasses. So we fill out 140, 150, 200 whose sum is 490, so we need 5 bottles for this.Input: N = 5, K = 4, arr[] = {1, 2, 3, 2, 1} Output: 1 
Approach: To fill out exactly K glasses, take the K glasses with the least capacity. So for this sort the list of given capacities. The final answer will be the ceiling value of (Sum of capacities of 1st k glasses) / (Capacity of 1 bottle).Below is the implementation of the above approach: 
C++
Java
Python3
C#
PHP
Javascript
// C++ implementation of the approach#include <bits/stdc++.h>using namespace std; // function to calculate minimum glassesdouble Min_glass(int n, int k,                            int a[]){    // sort the array based on    // their capacity      int sum = 0;      // taking sum of capacity    // of first k glasses    for (int i = 0; i < k; i++)        sum += a[i];      // calculate the answer    double ans = ceil((double)sum /                            (double)100);      return ans;} // Driver codeint main(){     int n = 4;    int k = 3;    int a[] = { 200, 150, 140, 300 };    sort(a, a+n);    cout << Min_glass(n, k, a);     return 0;} // This code is contributed by target_2.
// Java implementation of the// above approachimport java.util.*; class GFG{// function to calculate minimum glassespublic static double Min_glass(int n, int k,                            int[] a){    // sort the array based on    // their capacity     int sum = 0;     // taking sum of capacity    // of first k glasses    for (int i = 0; i < k; i++)        sum += a[i];     // calculate the answer    double ans = Math.ceil((double)sum /                            (double)100);     return ans;} // Driver codepublic static void main(String[] args){    int n = 4;    int k = 3;    int[] a = { 200, 150, 140, 300 };    Arrays.sort(a);    System.out.println(Min_glass(n, k, a));}} // This code is contributed by mits
# Python3 implementation of the above approachfrom math import ceil # Function to calculate minimum glassesdef Min_glass(n, k, a):      # sort the array based on their capacity    a.sort()     # calculate the answer    return ceil(sum(a[:k]) / 100)  # Driver codeif __name__ == "__main__":      n, k = 4, 3    a = [200, 150, 140, 300]      print(Min_glass(n, k, a)) # This code is contributed by Rituraj Jain
// C# implementation of the// above approachusing System; class GFG{// function to calculate minimum glassespublic static double Min_glass(int n, int k,                               int []a){    // sort the array based on    // their capacity     int sum = 0;     // taking sum of capacity    // of first k glasses    for (int i = 0; i < k; i++)        sum += a[i];     // calculate the answer    double ans = Math.Ceiling((double)sum /                              (double)100);     return ans;} // Driver codepublic static void Main(){    int n = 4;    int k = 3;    int[] a = { 200, 150, 140, 300 };    Array.Sort(a);    Console.WriteLine(Min_glass(n, k, a));}} // This code is contributed// by Soumik Mondal
<?php// PHP implementation of the above approach // function to calculate minimum glassesfunction Min_glass($n, $k, $a){    // sort the array based on    // their capacity    sort($a);     $sum = 0;     // taking sum of capacity    // of first k glasses    for ($i = 0; $i < $k; $i++)        $sum += $a[$i];     // calculate the answer    $ans = ceil($sum /100);     return $ans;} // Driver code$n = 4;$k = 3;$a = array( 200, 150, 140, 300 ); echo Min_glass($n, $k, $a); // This code is contributed// by akt_mit?>
<script> // Javascript implementation of the// above approach // Function to calculate minimum glassesfunction Min_glass(n, k, a){         // Sort the array based on    // their capacity    var sum = 0;     // Taking sum of capacity    // of first k glasses    for(var i = 0; i < k; i++)        sum += a[i];     // Calculate the answer    var ans = parseInt(Math.ceil(sum / 100));     return ans;} // Driver Codevar n = 4;var k = 3;var a = [ 200, 150, 140, 300 ];a.sort(); document.write(Min_glass(n, k, a)); // This code is contributed by Ankita saini </script>
5
 
jit_t
SoumikMondal
Mithun Kumar
rituraj_jain
ankita_saini
target_2
simmytarika5
Greedy
Mathematical
Sorting
Greedy
Mathematical
Sorting
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Optimal Page Replacement Algorithm
Program for Best Fit algorithm in Memory Management
Program for First Fit algorithm in Memory Management
Bin Packing Problem (Minimize number of used Bins)
Max Flow Problem Introduction
Program for Fibonacci numbers
C++ Data Types
Set in C++ Standard Template Library (STL)
Merge two sorted arrays
Modulo Operator (%) in C/C++ with Examples