Solutions
HackerEarth
HackerEarth
  • Home
  • 👨🏻‍💻 Profile
  • Practice
    • Basic Programming
      • Input/Output
        • Easy
    • Data Structure
      • Linked List
    • Algorithms
      • Searching
        • Linear Search
        • Binary Search
      • Greedy Algorithms
Powered by GitBook
On this page

Was this helpful?

  1. Practice
  2. Algorithms

Greedy Algorithms

Being greedy for Water

You are given container full of water. Container can have limited amount of water. You also have N bottles to fill. You need to find the maximum numbers of bottles you can fill.

Input: First line contains one integer, T, number of test cases. First line of each test case contains two integer, N and X, number of bottles and capacity of the container. Second line of each test case contains N space separated integers, capacities of bottles.

Output: For each test case print the maximum number of bottles you can fill.

#include <bits/stdc++.h>

using namespace std;
int main() {
    int T;
    cin >> T;
    while (T--) {
        int numberOfBottles, capacityOfTheContainer;
        cin >> numberOfBottles >> capacityOfTheContainer;
        int A[numberOfBottles];
        for (int i = 0; i < numberOfBottles; i++) {
            cin >> A[i];
        }
        sort(A, A + numberOfBottles);
        int capacity = 0, noOfBottlesFilled = 0;
        for (int i = 0; i < numberOfBottles; i++) {
            capacity = capacity + A[i];
            if (capacity <= capacityOfTheContainer)
                noOfBottlesFilled++;
            else
                break;
        }
        cout << noOfBottlesFilled << endl;
    }
}
PreviousBinary Search

Last updated 2 years ago

Was this helpful?