A entrada consiste de várias instruções a serem executadas na lista. Cada instrução está em um dos seguintes formatos:
rP |
Remove o primeiro elemento da lista (n > 0). |
rk k |
Remove o k-ésimo elemento da lista (1 <= k <= n). |
iU x |
Insere x na última posição da lista |
il l x |
Insere x na l-ésima posição da lista (1 <= l <= n+1). |
rP iU 2 rP iU 5 iU 10 iU 15 iU 20 rP rk 4 iU 25 il 2 30 il 7 35 il 4 40 #
O arquivo de saída contém uma linha para instrucção do arquivo de entrada. Para cada linha:
INEXISTENTE
deve ser mostrada.INEXISTENTE 2 5 5 10 5 10 15 5 10 15 20 10 15 20 INEXISTENTE 10 15 20 25 10 30 15 20 25 INEXISTENTE 10 30 15 40 20 25
A entrada contém expressões na forma in-fixa. Essas expressões não
são ambíguas e contém apenas variáveis com uma só letra,
as quatro operações básicas e os símbolos de abre e fecha
parênteses. Cada expressão termina com um símbolo '=' (que não
deve ser processado). Você pode supor que há sempre um espaço após
cada símbolo (exceto o '='). Cada expressão não contém mais de
100 caracteres, e uma linha com um '#' indica o fim do arquivo.
Cada sub-expressão estará entre parênteses.
ENTRADA ::= EXP = | # EXPR ::= ( EXPR OP EXPR ) | VAR OP ::= + | - | * | / VAR ::= a | ... | z
( ( ( a + b ) * ( m - n ) ) / ( ( x - y ) - z ) ) = ( ( a + b ) * ( ( m - n ) / ( ( x - y ) - z ) ) ) = a = #Note: A linha "
( a + b + c ) =
" não é uma entrada válida entrada!O arquivo de saída consiste de várias linhas, indicando a notação pós-fixa de cada expressão do arquivo de entrada. Deve haver um espaço em branco após cada símbolo.
Saída da entrada acima:a b + m n - * x y - z - / a b + m n - x y - z - / * a