Antiga Roma (2) P79161


Statement
 

pdf   zip

thehtml

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.

Public test cases
  • 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
    ----------
    
  • Information
    Author
    Salvador Roura
    Language
    Catalan
    Official solutions
    C++
    User solutions
    C++