Canadian Computing Competition: 2011 Stage 1, Senior #4
At the Canadian Cardiac Centre there are four types of blood available: O, A, B, and AB. Each of these types of blood has an Rh factor, which is either "positive" or "negative". There are many patients who each require ~1~ unit of blood. Each patient's blood type determines the type of blood s/he may receive:
- Each Type O patient requires Type O blood.
- Each Type A patient may receive blood of Type A or Type O.
- Each Type B patient may receive blood of Type B or Type O.
- The Type AB patients may receive blood of any type.
Patients who have Rh-negative blood can accept Rh-negative blood only, but patients with Rh-positive blood can accept either Rh-positive or Rh-negative types of blood.
We want as many patients as possible to receive a unit of blood. What is the maximum number of patients that can receive blood?
The first line of input contains ~8~ integers: the number of units of blood of Type O negative, O positive, A negative, A positive, B negative, B positive, AB negative and AB positive. This is followed by a line containing eight numbers: the number of patients whose blood type is O negative, O positive, A negative, A positive, B negative, B positive, and AB negative and AB positive. Each of these integers will be at least ~0~ and less than ~10^7~.
The output of your program should be a single number: the maximum number of patients that can receive blood.
5 5 3 1 2 11 5 12 2 4 9 2 3 9 7 3
- 2 Type O- patients receive Type O- blood
- 4 Type O+ patients receive Type O+ blood
- 3 Type A- patients receive Type A- blood
- 3 Type A- patients receive Type O- blood
- 1 Type A+ patients receive Type A+ blood
- 1 Type A+ patients receive Type O+ blood
- 2 Type B- patients receive Type B- blood
- 9 Type B+ patients receive Type B+ blood
- 5 Type AB- patients receive Type AB- blood
- 3 Type AB+ patients receive Type AB+ blood
Note: At least ~30~% of the test cases for this problem will have at most ~1000~ units of each type of blood.