APPIATTISCI
PROBLEMA
Questo passatempo è basato su una serie di N pile, ognuna delle quali può contenere uno o più mattoncini (vedi Figura 1). Le pile sono identificate dai numeri interi da 1 a N. Una mossa di questo gioco consiste in una coppia data dal numero di una pila, diciamo p, e da un altro numero positivo, diciamo m. Quando si effettua questa mossa, m mattoncini vengono trasferiti dalla pila p a ciascuna delle pile adiacenti (si veda la Figura 2 per un esempio). La pila p ha due vicini, p-1 e p+1 se 1<p<N, il solo vicino 2 se p=1, e il solo vicino N-1 se p=N. Notate che per poter fare la mossa indicata, la pila p deve contenere almeno 2m mattoncini se ha due vicini, e almeno m mattoncini se ha un solo vicino. L'obiettivo del gioco è di "appiattire" tutte le pile, cioè
di fare in modo che tutte contengano lo stesso numero di mattoncini, facendo
il minor numero possibile di mosse. Se ci sono più soluzioni, se
ne deve comunque riportare una sola.
ASSUNZIONI
L'input è contenuto in un file flat.inp che contiene due righe.
OUTPUT L'output va prodotto su un file di nome flat.out..
ESEMPIO flat.inp:
flat.out
NOTA SULLA VALUTAZIONE Il programma dovrà terminare la propria esecuzione entro 3 secondi. Per avere un punteggio pieno, A, per un file di test, il numero
di mosse prodotte, x, deve essere minore o uguale al numero B
di mosse previste dal programma di valutazione (si noti che B non
è necessariamente il minimo numero di mosse possibile: in effetti,
B
è scelto seguendo una semplice strategia senza mosse ridondanti).
E' possibile ottenere un punteggio parziale, calcolato arrotondando all'intero
più vicino il valore ottenuto secondo la seguente formula:
SoluzioneEuristica (vedi codice). |