CS302 Midterm Exam - October 14, 2014 - Page 3

Do your answers on the answer sheets provided. When you write code, you do not need to have "include" or "using" statements.

Question 5

Your job is to write the procedure int RB(int r, int b, vector <int> &N). The procedure works as follows. Each element of N is a number of balls, which are either all red or all blue. The problem is, you don't know which color they are. Your program should return 1 if it is possible for the vector to represent excaly r red balls and b blue balls. It should return 0 if it is impossible.

For example, RB(6, 7, { 4, 2, 4, 3 }) should return 1, and RB(6, 8, { 4, 2, 4, 3 }) should return 0. RB(6, 7, { 4, 4, 4, 1 }) should return 0 as well.

Constraint #1: N will have a maximum of 20 elements.
Constraint #2: Each element of N will be less than 200,000,000.
Constraint #3: No constraints on r or b.

Before writing this procedure, I want you to do the following:

• Outline your solution in English, rather than writing code.
• If this were a topcoder problem, N's size could not be much bigger than this. Maybe 21 or 22. Why?
• Finally, code up your solution.

Scratch Space is Below (You may find the following useful):

 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19