You have just completed Java Certification exam that contained n questions. You have a score card that explains your performance. The example of the scorecard is given below.
You have correctly answered 78 questions out of 87.
Basic Concepts | 100% |
Declarations | 100% |
Expressions | 83% |
Classes and Interfaces | 92% |
Multithreading | 75% |
Collections | 93% |
From this scorecard you can infer that the questions are broken down into m categories (in the above example m = 6). Each category contains ni questions (1 <= ni <= n), so that
__poj_jax_start__\sum\limits_{i = 1}^m {n_i}__poj_jax_end__=n. You know that you have correctly answered k questions out of n (in the above example k = 78 and n = 87), so you can easily find the number of incorrect answers w = n - k (in the above example w = 9).
You do remember several questions that you were unsure about and you can guess what category they belong to. To figure out if your answers on those questions were right or wrong, you really want to know how many incorrect answers you have given in each category.
Let wi (0 <= wi <= ni) be the number of incorrect answers in i-th category,
__poj_jax_start__\sum\limits_{i = 1}^m {w_i}__poj_jax_end__=w. From the scorecard you know the percentage of correct answers in each category. That is, for each i from 1 to m you know the value of 100(ni - wi)/ni rounded to the nearest integer. The value with a fractional part of 0.5 is rounded to the nearest even integer.
It may not be possible to uniquely find the valid values for wi. However, you guess that the questions are broken down into categories in a mostly uniform manner. You have to find the valid values of wi and ni, so that to minimize the difference between the maximum value of ni and the minimum value of ni. If there are still multiple possible values for wi and ni, then find any of them.