Problem · Greedy

Max Subjects Number

Learn this problem
EasyIBM logoIBMFULLTIMEOA
See IBM hiring insights

Problem statement

A student is taking a test on n different subjects. For each nth subject they have already answered answered[i] questions and have time to answer a total of q more questions overall. For each nth subject, the number of questions answered has to be at least needed[i] in order to pass. Determine the maximum number of subjects the student can pass if the additional answered questions are optimally distributed among the subjects.

For example, there are n = 2 subjects and needed = [4, 5] answered questions, respectively, to pass. The student has answered answered = [2, 4] questions in the two subjects so far, and can answer another q = 2 questions in all subjects combined. The best outcome is to answer an additional question in the second subject to pass it, and it is not possible to pass the first subject. The maximum number of subjects that can be passed is 1.

Function

maxSubjectsNumber(answered: int[], needed: int[], q: int) → int

Complete the function maxSubjectsNumber in the editor below. The function must return an integer that represents the maximum number of subjects that can be passed.

maxSubjectsNumber has the following parameter(s):

  1. answered[answered[0],...answered[n-1]]: an array of integers
  2. needed[needed[0],...needed[n-1]]: an array of integers
  3. q: an integer

ദ്ദി(˵ •̀ ᴗ - ˵ ) ✧ Tons of thanks to the sunshine ~ spike~!

Examples

Example 1

answered = [24, 27, 0]needed = [51, 52, 100]q = 100return = 2

🐣 Source note: Corrected on 2026-07-17 to align the explanation with the displayed sample input; the judged core task matches the visible source at about 99%.

Here answered = [24, 27, 0] and needed = [51, 52, 100]. The additional answers needed to pass the three subjects are [27, 25, 100].

Using 27 + 25 = 52 of the 100 additional answers allows the student to pass the first two subjects. Passing the third subject requires all 100 additional answers, so it is not possible to pass all three subjects. Therefore, the maximum number of subjects that can be passed is 2.

Example 2

answered = [24, 27, 0]needed = [51, 52, 100]q = 200return = 3
:)

Example 3

answered = [2, 4]needed = [4, 5]q = 1return = 1
There are n = 2 subjects and needed = [4, 5] answered questions, respectively, to pass. The student has answered answered = [2, 4] questions in the two subjects so far, and can answer another q = 1 questions in all subjects combined. The best outcome is to answer an additional question in the second subject to pass it, and it is not possible to pass the first subject. The maximum num of subjects that can be passed is 1 :)

Constraints

  • 1 ≤ n ≤ 10^5
  • 0 ≤ answered[i], needed[i] ≤ 10^9

More IBM problems

drafts saved locally
public int maxSubjectsNumber(int[] answered, int[] needed, int q) {
  // write your code here
}
answered[24, 27, 0]
needed[51, 52, 100]
q100
expected2
checking account