Minimum number of bottles required to fill K glasses
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++
#include <bits/stdc++.h>
using namespace std;
double Min_glass( int n, int k,
int a[])
{
int sum = 0;
for ( int i = 0; i < k; i++)
sum += a[i];
double ans = ceil (( double )sum /
( double )100);
return ans;
}
int 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;
}
|
C
#include <stdio.h>
#include<math.h>
double Min_glass( int n, int k, int a[])
{
int sum = 0;
for ( int i = 0; i < k; i++)
sum += a[i];
double ans = ceil (( double )sum /
( double )100);
return ans;
}
int main()
{
int n = 4;
int k = 3;
int temp=0;
int a[] = { 200, 150, 140, 300 };
int length = sizeof (a)/ sizeof (a[0]);
for ( int i = 0; i < length; i++) {
for ( int j = i+1; j < length; j++) {
if (a[i] > a[j]) {
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
printf ( "%.0f" ,Min_glass(n, k, a));
return 0;
}
|
Java
import java.util.*;
class GFG
{
public static double Min_glass( int n, int k,
int [] a)
{
int sum = 0 ;
for ( int i = 0 ; i < k; i++)
sum += a[i];
double ans = Math.ceil(( double )sum /
( double ) 100 );
return ans;
}
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));
}
}
|
Python3
from math import ceil
def Min_glass(n, k, a):
a.sort()
return ceil( sum (a[:k]) / 100 )
if __name__ = = "__main__" :
n, k = 4 , 3
a = [ 200 , 150 , 140 , 300 ]
print (Min_glass(n, k, a))
|
C#
using System;
class GFG
{
public static double Min_glass( int n, int k,
int []a)
{
int sum = 0;
for ( int i = 0; i < k; i++)
sum += a[i];
double ans = Math.Ceiling(( double )sum /
( double )100);
return ans;
}
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));
}
}
|
PHP
<?php
function Min_glass( $n , $k , $a )
{
sort( $a );
$sum = 0;
for ( $i = 0; $i < $k ; $i ++)
$sum += $a [ $i ];
$ans = ceil ( $sum /100);
return $ans ;
}
$n = 4;
$k = 3;
$a = array ( 200, 150, 140, 300 );
echo Min_glass( $n , $k , $a );
?>
|
Javascript
<script>
function Min_glass(n, k, a)
{
var sum = 0;
for ( var i = 0; i < k; i++)
sum += a[i];
var ans = parseInt(Math.ceil(sum / 100));
return ans;
}
var n = 4;
var k = 3;
var a = [ 200, 150, 140, 300 ];
a.sort();
document.write(Min_glass(n, k, a));
</script>
|
Time Complexity: O(nlog(n)), since best sorting algorithm takes nlog(n) times.
Auxiliary Space: O(1), since no extra space has been taken.
Last Updated :
16 Aug, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...