title: Maximum Removal From Array When Removal Time Waiting Time
signature: fun maximumRemovalFromArrayWhenRemovalTimeWaitingTime(arr: ArrayList<Int>, n: Int): Int {
source_py: def maximum_removal_from_array_when_removal_time_waiting_time(arr, n):
      count = 0
      cummulative_sum = 0
      arr.sort()
      for i in range(n):
          if (arr[i] >= cummulative_sum):
              count += 1
              cummulative_sum += arr[i]
      return count
source_cpp: int maximum_removal_from_array_when_removal_time_waiting_time(vector<int> arr, int n) {
    int count = 0;
    int cummulative_sum = 0;
    sort(arr.begin(), arr.end());
    for ( int i = 0;
    i < n;
    i ++ ) {
      if ( arr [ i ] >= cummulative_sum ) {
        count ++;
        cummulative_sum += arr [ i ];
      }
    }
    return count;
  }
question_info.test_list: [{"idx": 0, "outputs": 3, "inputs": {"arr": [7, 33, 34, 42, 42, 45, 73], "n": 5}}, {"idx": 1, "outputs": 4, "inputs": {"arr": [-98, -90, -80, -66, -64, -62, -48, -30, -20, -10, 4, 6, 12, 14, 32, 42, 44, 44, 52, 64, 86, 92, 94], "n": 16}}, {"idx": 2, "outputs": 2, "inputs": {"arr": [0, 0, 0, 0, 1], "n": 2}}, {"idx": 3, "outputs": 3, "inputs": {"arr": [11, 44, 71, 82, 85, 89], "n": 3}}, {"idx": 4, "outputs": 5, "inputs": {"arr": [-96, -92, -78, -72, -68, -58, -52, -50, -50, -48, -42, -32, -20, -18, -4, 0, 0, 2, 18, 18, 20, 24, 32, 34, 36, 38, 38, 60, 66, 68, 70, 72, 72, 74, 76, 96, 98], "n": 21}}, {"idx": 5, "outputs": 11, "inputs": {"arr": [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], "n": 16}}, {"idx": 6, "outputs": 5, "inputs": {"arr": [8, 9, 10, 11, 12, 15, 17, 19, 20, 21, 24, 30, 33, 35, 36, 39, 41, 41, 42, 54, 62, 63, 68, 70, 71, 72, 77, 85, 86, 86, 94, 95, 97, 97], "n": 31}}, {"idx": 7, "outputs": 6, "inputs": {"arr": [-94, -90, -72, -70, -66, -60, -24, -16, 4, 4, 10, 22, 28, 36, 46, 60, 70, 72, 76, 92, 96], "n": 20}}, {"idx": 8, "outputs": 13, "inputs": {"arr": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], "n": 13}}, {"idx": 9, "outputs": 4, "inputs": {"arr": [7, 10, 12, 16, 20, 28, 31, 40, 42, 47, 53, 57, 59, 63, 63, 67, 69, 84, 90, 97], "n": 10}}]
question_info.extension: kts
question_info.test_code: package main
  
  import kotlin.text.*
  import kotlin.math.*
  
  
  // SOLUTION CODE
  // ===================================
  PLACEHOLDER_CODE_BODY
  
  // TESTING CODE
  // ===================================
  fun validateSolution(actual:Int, expected:Int):Boolean{
    return actual.equals(expected)
  }
  fun driver(arr: ArrayList<Int>, n: Int, expected:Int):String {
      try{
        if (validateSolution(PLACEHOLDER_FN_NAME(arr, n), expected)) {
                return "PASSED"
        }
        return "FAILED"
      } catch (e: Exception){
        return e::class.simpleName as String
      }
  
  }
  
  fun main() {
      var result: String = ""
      result = driver(arrayListOf(7, 33, 34, 42, 42, 45, 73), 5, 3)
      println("TEST-0...${result}")
      
      result = driver(arrayListOf(-98, -90, -80, -66, -64, -62, -48, -30, -20, -10, 4, 6, 12, 14, 32, 42, 44, 44, 52, 64, 86, 92, 94), 16, 4)
      println("TEST-1...${result}")
      
      result = driver(arrayListOf(0, 0, 0, 0, 1), 2, 2)
      println("TEST-2...${result}")
      
      result = driver(arrayListOf(11, 44, 71, 82, 85, 89), 3, 3)
      println("TEST-3...${result}")
      
      result = driver(arrayListOf(-96, -92, -78, -72, -68, -58, -52, -50, -50, -48, -42, -32, -20, -18, -4, 0, 0, 2, 18, 18, 20, 24, 32, 34, 36, 38, 38, 60, 66, 68, 70, 72, 72, 74, 76, 96, 98), 21, 5)
      println("TEST-4...${result}")
      
      result = driver(arrayListOf(0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), 16, 11)
      println("TEST-5...${result}")
      
      result = driver(arrayListOf(8, 9, 10, 11, 12, 15, 17, 19, 20, 21, 24, 30, 33, 35, 36, 39, 41, 41, 42, 54, 62, 63, 68, 70, 71, 72, 77, 85, 86, 86, 94, 95, 97, 97), 31, 5)
      println("TEST-6...${result}")
      
      result = driver(arrayListOf(-94, -90, -72, -70, -66, -60, -24, -16, 4, 4, 10, 22, 28, 36, 46, 60, 70, 72, 76, 92, 96), 20, 6)
      println("TEST-7...${result}")
      
      result = driver(arrayListOf(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1), 13, 13)
      println("TEST-8...${result}")
      
      result = driver(arrayListOf(7, 10, 12, 16, 20, 28, 31, 40, 42, 47, 53, 57, 59, 63, 63, 67, 69, 84, 90, 97), 10, 4)
      println("TEST-9...${result}")
      
          
  }
  
  main()
question_info.entry_fn_name: maximumRemovalFromArrayWhenRemovalTimeWaitingTime
question_info.entry_cls_name: Solution
question_info.test_case_ids: 0 1 2 3 4 5 6 7 8 9
question_info.commands: kotlinc -script __FILENAME__ -no-reflect -nowarn