Minibus 1024

Time Limit:
2 Sec
Memory Limit:
128Mb
Enviados:
0
Resuelto:
0
Enviar IDE Estado

Descripción

Los minibuses son un medio de transporte muy popular en Bolivia. Un minibús es un tipo especial de bus que tiene la peculiaridad de no tener pasillo, todo el espacio dentro del minibús está ocupado por asientos, por lo que no se desperdicia nada de espacio en el interior. Los extranjeros, muy asombrados por este tipo de transporte tan compacto, a veces lo llaman “enlatado”.

Los minibuses tienen sólo dos puertas para los pasajeros, ambas en el lado derecho del minibús. La primera puerta se encuentra en la primera fila de asientos (la fila donde se encuentra el chofer), y la segunda puerta empieza en la segunda fila y ocupa usualmente un par de ellas. Los asientos del extremo derecho, desde la segunda fila hasta la última son plegables, lo que permite a los pasajeros subir y bajar por la segunda puerta. Los demás asientos son fijos.

La siguiente figura ilustra dos minibuses diferentes. Cada casilla representa un asiento, y la “x” representa el chofer.

Dos configuraciones del minibús

Pero el ahorro de espacio en los minibuses tiene un precio. Cuando un pasajero desea bajar, incomoda a todos los pasajeros en su trayecto a la puerta más cercana, haciéndolos bajar también. Una vez que el pasajero ha abandonado el minibús, los pasajeros ”incomodados”que bajaron se sientan de nuevo siguiendo el siguiente criterio: el primer pasajero incomodado ocupa el lugar del pasajero que se fue, el segundo pasajero incomodado ocupa el lugar que tenía el primero, el tercero del segundo y así sucesivamente.

Por ejemplo, si el pasajero G de la siguiente figura quiere bajar, incomoda a los pasajeros H y E para bajar.

Secuencia antes, durante y después de que G baje

Como puede ver, después de que bajó G, H ocupa el asiento que tenía G y E ocupa el asiento que tenía H (aunque haya otros asientos libres). Se ha incomodado a 2 pasajeros, dicho de otro modo, se ha causado 2 molestias.

Si después quisiera bajar I, se incomodaría a J, K y E, entonces tendríamos 2 + 3 = 5 molestias hasta ese momento.

El minibús 1024 es un minibus peculiar, con pasajeros peculiares. El minibús 1024 sólo recoge pasajeros en su parada y no en el camino. Note que el minibús no siempre se llena, así que puede partir con asientos vacíos.

Los pasajeros del minibús 1024 siempre se bajan en lugares diferentes, por lo que no habrá dos pasajeros que se bajen en el mismo lugar.

Además, los pasajeros se han dado cuenta de que si se organizan inteligentemente antes de subir al minibús, podrían incomodarse menos el momento de bajar.

Tu trabajo es escribir un programa que ayude a los pasajeros del minibús 1024 a lograr este objetivo, es decir hacer que cada pasajero se siente en el lugar que cause la menor cantidad posible de molestias, hasta que se bajen todos.

Entrada

Cada caso empieza con una línea que contiene 4 enteros X, Y , P y N. X es un entero que representa cuantos asientos tiene de ancho el minibus (2 ≤X ≤10). Y similarmente representa el número de filas del minibús (3 ≤Y ≤20), P representa la longitud (en asientos) de la segunda puerta (1 ≤P < Y/2), y N representa la cantidad de pasajeros que subirá (1 ≤N < X × Y ).

La próxima línea contiene N enteros positivos distintos Di indicando las distancias, en cuadras desde el punto de partida hasta el punto en que bajará cada pasajero (1 ≤Di ≤10000). Note que una menor distancia significa que el pasajero bajará antes.

Una línea en blanco separa a los casos de prueba. La entrada finaliza cuando X = Y = L = N = 0.

Salida

Para cada caso en la entrada, el programa deberá escribir varias líneas de salida. La primera línea contiene un entero indicando el número total de molestias que se causó hasta que se bajaron todos los pasajeros. Las próximas Y líneas deben mostrar el estado inicial del minibús (después de que subieron los pasajeros). Cada línea tiene X valores separados por un espacio, indicando el estado de cada asiento. Escriba “x” si es el asiento del chofer, “-” si el asiento está vacío. Si el asiento está ocupado por un pasajero, escriba la distancia de ese pasajero.

Si hubieran varias formas de obtener el mínimo de molestias, cualquiera se considera válida. Debe escribirse una línea en blanco después de cada caso.

Ejemplo Entrada

Copy icon
3 5 2 2
7 9

4 6 3 9
15 10 20 18 17 5 19 12 16

0 0 0 0

Ejemplo Salida

Copy icon
0
x - -
- - -
9 7 -
- - -
- - -

0
x 20 - 18
- - 16 5
- - - -
- - - -
- - - 10
19 17 15 12

Ayuda