Antiga Roma (2) P79161


Statement
 

pdf   zip

Considereu una civilització com la romana, tradicional i jerarquitzada. Hi ha nn dones nobles solteres (enumerades entre 1 i nn) i mm homes nobles solters (enumerats entre 1 i mm) en edat de casar-se. L’emperador ha calculat, per a cada parell (i,j)(i, j), el benefici MijM_{ij} que suposaria per a Roma que la dona ii-èsima es casés amb l’home jj-è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_1, j_1) i (i2,j2)(i_2, j_2) tals que i1<i2i_1 < i_2 però j1>j2j_1 > j_2, perquè a la dona i1i_1, que és més important que la dona i2i_2, li tocaria un marit de menys categoria (i a l’inrevés).

Donada MM, podeu fer els matrimonis que calgui per maximitzar el benefici per a Roma?

Entrada

L’entrada consisteix en diversos casos, cadascun amb nn i mm, seguides de la matriu MM: nn files amb mm naturals cadascuna. Suposeu que nn i mm es troben entre 1 i 1000, i que tots els MijM_{ij} es troben entre 1 i 10610^6.

Sortida

Per a cada cas, escriviu el màxim benefici possible, seguit dels nn matrimonis formats: per a cada dona entre 1 i nn, 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 Θ(nm)\Theta(n \cdot 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++