Canadian Computing Competition: 2015 Stage 1, Senior #2
A school team is trying to assign jerseys numbered ~1, 2, 3, \dots, J~ to student athletes. The size of each jersey is either small (
S), medium (
M) or large (
Each athlete has requested a specific jersey number and a preferred size. The athletes will not be satisfied with a jersey that is the wrong number or that is smaller than their preferred size. They will be satisfied with a jersey that is their preferred size or larger as long as it is the right number. Two students cannot be given the same jersey.
Your task is to determine the maximum number of requests that can be satisfied.
The first line of input is the integer ~J~ which is the number of jerseys.
The second line of input is the integer ~A~ which is the number of athletes.
The next ~J~ lines are each the character
L. Line ~j~ gives the size of jersey ~j~ (~1 \le j \le J~).
The last ~A~ lines are each the character
L followed by a space, followed by an integer. Line ~a~ (~1 \le a \le A~) gives the requested size and jersey number for athlete ~a~ where the athletes are numbered ~1, 2, 3, \dots, A~.
For 50% of the test cases, ~1 \le J \le 10^3~ and ~1 \le A \le 10^3~.
For the remaining 50% of the test cases, ~1 \le J \le 10^6~ and ~1 \le A \le 10^6~.
The output will consist of a single integer which is the maximum number of requests that can be satisfied.
4 3 M S S L L 3 S 3 L 1
Output for Sample Input
Explanation of Output for Sample Input
Jersey ~1~ cannot be assigned because it is medium and athlete ~3~ requested large. No athlete requested jersey ~2~ or ~4~. Jersey ~3~, can be assigned to athlete ~2~, but not athlete ~1~.