Prova - Pintant cotxes X64205


Statement
 

pdf   zip

Una coneguda marca automobilística ens demana ajuda per millorar el procés de pintat dels seus cotxes. Els cotxes es pinten per tandes amb algun dels nn colors disponibles. Cada vegada que arriba un cotxe d’un color diferent del cotxe pintat just abans, cal netejar les pistoles. Aquesta tasca de neteja per passar del color ii al color jj té cost xijx_{ij}. Inicialment les pistoles ja estan netes i no hi ha cost. Quan finalment s’acaba la tanda de cotxes, cal tornar a netejar les pistoles, perquè estiguin llestes per quan arribi la tanda següent. Tanmateix aquesta neteja és especial, ja que si queden residus de pintura, es poden assecar i fer malbé les pistoles. Com que aquest últim procés té el mateix cost sigui quin sigui el darrer color usat, es pot excloure del càlcul de costos. Així doncs, només s’incorre en despesa quan hi ha un canvi de colors a la seqüència de cotxes.

Si una tanda consisteix en mm cotxes, cadascun identificat amb un natural kk entre 00 i m1m-1, de colors c0c_{0}, c1c_{1}, …, cm1{0,1,...,n1}c_{m-1} \in \{0, 1, ..., n-1\} respectivament, quina és la forma òptima d’ordenar els cotxes per tal de minimitzar els costos de neteja?

Entrada

L’entrada consisteix en diversos casos. Cada cas comença amb un natural nn, el nombre de colors disponibles. A continuació vénen n×nn \times n naturals que representen els costos xijx_{ij} (on 0i,j<n0 \leq i, j < n). Després ve mm, el nombre de cotxes de la tanda. Finalment vénen els mm colors ckc_{k} de cadascun dels cotxes, on 0k<m0 \leq k < m. Podeu suposar 1n101 \leq n \leq 10, 0xij1040 \leq x_{ij} \leq 10^{4}, 0m1040 \leq m \leq 10^{4}, 0ck<n0 \leq c_{k} < n, i que per cada color ii tenim xii=0x_{ii} = 0 i hi ha almenys un cotxe kk tal que ck=ic_{k} = i.

Sortida

Escriviu la seqüència de cotxes lexicogràficament més petita entre les que tenen cost mínim, i el cost mínim.

Observació

Fer una cerca exhaustiva sobre totes les permutacions de cotxes serà massa lent.

Es valorarà la correctesa, l’eficiència, la completesa, la concisió, la llegibilitat i l’estructuració del programes enviats.

Public test cases
  • Input

    1
    0 
    2
    0 0 
    
    2
    0 2 
    1 0 
    6
    1 1 0 1 1 0 
    
    2
    0 1 
    1 0 
    3
    1 0 0 
    
    2
    0 1
    1 0
    4
    0 0 1 1
    
    2
    0 1
    1 0
    4
    1 1 0 0
    
    3
    0 1 9
    1 0 9
    5 5 0
    5
    1 0 0 1 2
    

    Output

    0 1, amb cost: 0
    0 1 3 4 2 5, amb cost: 1
    0 1 2, amb cost: 1
    0 1 2 3, amb cost: 1
    0 1 2 3, amb cost: 1
    4 0 3 1 2, amb cost: 6
    
  • Information
    Author
    Enric Rodríguez
    Language
    Catalan
    Official solutions
    C++
    User solutions
    C++