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 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/C++
// C++ implementation of the above approach #include <bits/stdc++.h> using namespace std; // function to calculate minimum glasses int Min_glass( int n, int k, int a[]) { // sort the array based on // their capacity sort(a, a + n); int sum = 0; // taking sum of capacity // of first k glasses for ( int i = 0; i < k; i++) sum += a[i]; // calculate the answer int ans = ceil (( double )sum / ( double )100); return ans; } // Driver code int main() { int n = 4; int k = 3; int a[] = { 200, 150, 140, 300 }; cout << Min_glass(n, k, a); return 0; } |
Java
// Java implementation of the // above approach import java.util.*; class GFG { // function to calculate minimum glasses public 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 code public 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
# Python3 implementation of the above approach from math import ceil # Function to calculate minimum glasses def Min_glass(n, k, a): # sort the array based on their capacity a.sort() # calculate the answer return ceil( sum (a[:k]) / 100 ) # Driver code if __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#
// C# implementation of the // above approach using System; class GFG { // function to calculate minimum glasses public 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 code public 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 // PHP implementation of the above approach // function to calculate minimum glasses function 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 ?> |
5
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.