Dígits en ordre òptim P46547


Statement
 

pdf   zip

Donat dos naturals mm i nn, heu de construir un nombre xx amb els dígits {1,,n}\{1, \dots, n\} (exactament un de cada) de manera que cap prefix (no buit) d’xx sigui múltiple d’mm. Per exemple, amb m=3m=3 i n=4n=4, x=2314x=2314 no és un ordre vàlid, perquè 231 és múltiple de 3. En canvi, x=4312x=4312 sí que és un ordre vàlid, perquè ni 4, ni 43, ni 431, ni 4312 són múltiples de 3.

A més, teniu una matriu M[1..n][1..n]M[1..n][1..n] tal que M[i][j]M[i][j] indica el premi que s’aconsegueix si es posa el dígit jj immediatament a la dreta del dígit ii. Maximitzeu la suma total de premis.

Entrada

L’entrada consisteix en diversos casos. Cada cas comença amb mm i nn, seguits d’MM: nn files, cadascuna amb nn naturals entre 1 i 10610^6, excepte la diagonal, que conté zeros. Podeu suposar 3m10003 \le m \le 1000 i 2n92 \le n \le 9.

Sortida

Per a cada cas, escriviu el màxim premi possible. Si no es pot construir cap xx, escriviu 0.

Public test cases
  • Input

    10 2
    0 4
    3 0
    
    6 2
    0 1000000
    1 0
    
    3 3
    0 7 7
    7 0 7
    7 7 0
    
    3 4
       0  1  2    3
    1000  0  4 2000
       5  6  0    7
       8  9  1    0
    

    Output

    4
    1
    0
    18
    
  • Information
    Author
    Salvador Roura
    Language
    Catalan
    Other languages
    English
    Official solutions
    C++
    User solutions
    C++ Python