Os testes para as listas de exercícios serão feitos via arquivos.
Seguem abaixo as especificações deles.


==========
Questão 1
==========
Arquivo fonte: L1Q1.{c | cpp | java}
Arquivo de entrada: L1Q1.in
Arquivo de saída: L1Q1.out
ENTRADA

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).
Onde n é o tamanho atual da lista.
A lista está inicialmente vazia. O programa termina quando a instrução '#' for lida.



Entrada exemplo:
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
#

SAÍDA

O arquivo de saída contém uma linha para instrucção do arquivo de entrada. Para cada linha:

Saída da entrada acima:
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

Note: como a lista está inicialmente vazia, a primeira instrução causa um erro. Como a lista ficou vazia a linha fica em branco.




==========
Questão 2
==========
Arquivo fonte: L1Q2.{c | cpp | java}
Arquivo de entrada: L1Q2.in
Arquivo de saída: L1Q2.out
ENTRADA

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.


A gramática das expressões:
	ENTRADA ::= EXP = | #
	EXPR    ::= ( EXPR OP EXPR ) | VAR
	OP      ::= + | - | * | /
	VAR     ::= a | ... | z

Entrada exemplo:
( ( ( 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!

SAÍDA

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





[Última alteração em 21/01/2002]