Вы находитесь на странице: 1из 3

Hay una estacin de tren famosa en la ciudad de PopPush.

Pas hay increblemente


montaoso. La estacin fue construida en el siglo pasado. Desafortunadamente, los fondos
eran extremadamente limitados ese tiempo. Era posible establecer solamente una pista
superficial. Por otra parte, result que la estacin podra ser solamente un callejn sin salida
(vase el cuadro) y debido a la carencia del espacio disponible podra tener solamente una
pista.

La tradicin local es que cada tren que llega desde la direccin a contina en la direccin B
con los entrenadores reorganizados de alguna manera. Supongamos que el tren que llega
desde la direccin A tiene N 1000 entrenadores numerados en el orden cada vez mayor 1,
2, ..., n. El jefe de las reorganizaciones de trenes debe saber si es posible ordenar a los
entrenadores que sigan en la direccin B para que su orden sea a1. a2, ..., aN. Aydele y
escriba un programa que decida si es posible obtener la orden requerida de los entrenadores.
Puede asumir que los entrenadores individuales pueden ser desconectados del tren antes de
entrar en la estacin y que pueden moverse hasta que estn en la pista en la direccin b.
Tambin puede suponer que en cualquier momento se puede localizar tantos entrenadores
como sea necesario en la estacin. Pero una vez que un entrenador ha entrado en la estacin
no puede volver a la pista en la direccin A y tambin una vez que ha dejado la estacin en
la direccin B no puede volver a la estacin.
Entrada

el archivo de entrada consta de bloques de lneas. Cada bloque excepto el ltimo describe
un tren y posiblemente ms requisitos para su reorganizacin. En la primera lnea del bloque
se encuentra el entero N descrito anteriormente. En cada una de las lneas siguientes del
bloque hay una permutacin de 1, 2, ..., n. La ltima lnea del bloque contiene slo ' 0 '. El
ltimo bloque consiste en slo una lnea que contiene ' 0 '.

Salida

El archivo de salida contiene las lneas correspondientes a las lneas con permutaciones en el
archivo de entrada. Una lnea del archivo de salida contiene ' Yes ' si es posible calcular los
entrenadores en el orden requerido en la lnea correspondiente del archivo de entrada. De lo
contrario contiene ' no '. Adems, hay una lnea vaca despus de las lneas correspondientes a
un bloque del archivo de entrada. No hay ninguna lnea en el archivo de salida correspondiente
al ltimo bloque "null" del archivo de entrada.

Muestra de entrada

1 2 3 4 5
5 4 1 2 3
0
6
6 5 4 3 21
0
0
Muestra de salida

Si

No

Si

Anlisis:
La estacin de tren es una pila. El tren que llega desde la direccin A tiene n 1000
entrenadores numerados en orden creciente, 1, 2, ..., n. Y los entrenadores que salen en la
direccin B se numeran como una permutacin para 1, 2, ..., n. La permutacin es
implementada por las operaciones de pila. Hay dos mtodos para resolver el problema:
Metodo 1:
Basado en el ltimo-en-primero-hacia fuera, para un elemento x, los elementos que son ms
grandes que x se empujan en la pila despus de que x se empuja en la pila, y los elementos
que son menos que x son empujados en la pila antes de que x es empujado en la pila. Por lo
tanto, cuando un elemento x se revent de la pila, los elementos que son ms grandes que
x en la pila deben ser reventados antes, y los elementos que son menores que x deben estar
en la pila. Supongamos vlido es la bandera legal para la permutacin, Max es el valor
mximo de los elementos en la pila o estallado de la pila, y P es la bandera del estado de un
elemento, donde p x x = 0 1 2 elemento no se ha insertado en el elemento de pila est en el
elemento Stack se ha estallado desde la pila x el algoritmo es el siguiente: inicialmente
todos los elementos no estn en la pila, es decir, todos los elementos en p se establecen 0,
Max = 0; Elementos de entrada en la permutacin actual uno por uno. Para el elemento
actual x, determine que la permutacin es vlida o no como sigue. Si es vlido == true,
entonces

si existe un elemento t que es mayor que x en la pila (p [t] == 1, y x + 1 t mx),


entonces vlido = false; para x no puede ser estallado de la pila. Basado en el "ltimo-en-
primero-hacia fuera," p debe ser estallado antes de x;

ajustar el valor mximo de los elementos en la pila o estallar de la pila (Max = (Max >
x? mx: x));

Cualquier elemento p [j] que sea menor que x debe estar en la pila (p [j] = 1, 1 j x
1).
Despus del proceso anterior, Output el resultado basado en vlido (vlido?) "s": "no").
Su complejidad del tiempo es O (N3).

Вам также может понравиться