Considereu una civilització com la romana, tradicional i jerarquitzada. Hi ha n dones nobles solteres (enumerades entre 1 i n) i m homes nobles solters (enumerats entre 1 i m) en edat de casar-se. L’emperador ha calculat, per a cada parell (i, j), el benefici Mij que suposaria per a Roma que la dona i-èsima es casés amb l’home j-èsim.
En aquest problema, l’ordre relatiu tant entre les dones com entre els homes no és arbitrari: la dona 1 té un estatus superior a la dona 2, la qual té un estatus superior a la dona 3, etc, i similarment entre els homes. La tradició impedeix formar dos matrimonis (i1, j1) i (i2, j2) tals que i1 < i2 però j1 > j2, perquè a la dona i1, que és més important que la dona i2, li tocaria un marit de menys categoria (i a l’inrevés).
Donada M, podeu fer els matrimonis que calgui per maximitzar el benefici per a Roma?
Entrada
L’entrada consisteix en diversos casos, cadascun amb n i m, seguides de la matriu M: n files amb m naturals cadascuna. Suposeu que n i m es troben entre 1 i 1000, i que tots els Mij es troben entre 1 i 106.
Sortida
Per a cada cas, escriviu el màxim benefici possible, seguit dels n matrimonis formats: per a cada dona entre 1 i n, escriviu el número del seu marit, o un zero si és millor deixar-la soltera. Amb els jocs de proves donats, la solució serà única. Escriviu una línia amb 10 guions al final de cada cas.
Observació
La solució esperada té cost Θ(n · m) en espai i en temps.
Input
2 2 23 42 30 37 3 3 90 10 20 40 30 70 10 80 10 4 5 1 3 7 8 9 1 3 1 7 8 1 3 1 1 7 2 1 1 1 1 3 4 3 2 10 2 2 4 3 2 8 6 5 7
Output
benefici: 60 1 2 ---------- benefici: 170 1 0 2 ---------- benefici: 21 3 4 5 0 ---------- benefici: 17 3 0 4 ----------