i'm working with "profession scrumbler" which gives for every person a profession under the following conditions:

1) each person gets only one profession. real or imaginary.
2) each person as a specified qualification score for each profession, (some of them are NULL).
3) the people come in five quality groups A,B,C,D and E, when for all professions an A person is better then a B person.
4) each profession has a requierd amount of people needed in each person's group. the amount is exact.
5) you may put an A person instead of a B person, and so on.
6) there are more people then open professions, so there is an imaginery group for every person left without a profession (named "0") with very low qualification score which have open places just to fill the blanks.

the system i'm using today solves five times the equations. once for each person's group. so if i desire to "upgrade" a profession i need to manually change the amounts of people it asks from each group.
which means the result is hoped to be optimized.

i have an opprutinty to change this system. but i need to choose between two alternatives i thought of:

1) running on a huge table of all persons (from all person's group), and give each B group select from A and B people's and so on.
this way i will get the best score, but i afraid that a long runnig time as well

2) runing a table of only A persons, everybody that got an imaginary group will join the B group and so on until i cover all the groups.

my questions are:
what is the difference between the options in optimum score?
what is the difference in runing time?