Problem hidden
|This problem was hidden by Editorial Board member probably because it has incorrect language|version or invalid test data, or description of the problem is not clear.|

SIMUL09 - Simulador

 

Um novo processador, denominado Faíska, está sendo desenvolvido para a empresa SBC. Este novo processador tem apenas duas instruções: inversão e soma, descritas a seguir.

  • Inversão: dados dois endereços de memória X e Y , a operação inverte(X,Y) inverte a posição de palavras da memória de forma que
    • a palavra no endereço X troca de posição com a palavra de memória da posição Y;
    • a palavra no endereço X + 1 troca de posição com a palavra de memória da posição Y − 1;
    • a palavra no endereço X + 2 troca de posição com a palavra de memória da posição Y − 2;
    • e assim por diante, até que X ≥ Y.
  • Soma: dados dois endereços de memória X e Y, a operação soma(X,Y) imprime a soma das palavras de memória entre os endereços X e Y (inclusive).

Por exemplo, se a memória contém inicialmente, a partir da primeira posição de memória (endereço igual a 1) os valores [1,2,3,4,5,6,7,8], a operação inverte(3,7) deixa a memória igual a [1,2,7,6,5,4,3,8]. Então, nesse estado, a execução de soma(1,3) produz a saída 10.

Tarefa

Sua tarefa é escever um programa que, dada uma sequência de instruções do Faíska, simule a execução e produza o mesmo resultado que o Faíska produziria.

Entrada

A entrada contém um único conjunto de testes, que deve ser lido do dispositivo de entrada padrão (normalmente o teclado).

A primeira linha da entrada contém dois números inteiros N e M, representando respectivamente o número palavras na memória (1 ≤ N ≤ 109) e o número de instruções do programa (1 ≤ M ≤ 1000). Cada uma das M linhas seguintes contém uma instrução do Faíska. Cada instrução é composta de um caratere descrevendo a instrução (‘I’ para inversão e ‘S’ para soma), seguido de um espaço, seguido de dois inteiros indicando os argumentos da instrução.

Inicialmente a configuração da memória é tal que cada palavra tem como conteúdo o seu próprio endereço. Em outras palavras, o conteúdo inicial da memória é [1,2,3,. . .,N]. Há pelo menos uma instrução soma em cada caso de teste.

Saída

Seu programa deve imprimir, na saída padrão, uma sequência de números inteiros, um em cada linha, indicando a saída gerada pelo Faíska.

Exemplos

Entrada
10 2
I 1 5
S 3 7

Saída
19

Entrada
15 4
S 2 11
I 10 15
I 1 10
S 5 10

Saída
65
21

Adicionado por:Wanderley Guimarăes
Data:2012-06-03
Tempo limite:1s
Tamanho do fonte:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Linguagem permitida:Todas exceto: ASM64 CLOJURE ERL FSHARP PERL6 PY_NBC SCALA TCL
Origem:OBI 2009 - fase 2 nível 2

hide comments
2012-06-09 01:44:26 victor Hugo
Como faço para Năo dar tempo limite excedido ?..o meu está dando sempre..já fiz de tudo aqui..kkkk
2012-06-07 01:13:19 Wanderley Guimarães
Os casos de teste foram arrumados, as submissőes estăo sendo rejulgadas

Last edit: 2012-06-07 01:14:33
2012-06-05 19:31:58 Fernando Fonseca [ITA]
EDIT2: Năo, o erro ainda năo foi consertado até o presente momento. Por enquanto, leiam M operaçőes com scanf() que funciona.

Last edit: 2012-06-05 21:08:04
2012-06-05 13:47:00 João Paulo Constantino [FIC-MG]
E ai esse erro comentado abaixo foi ou năo tratado, porque meu programa está retornando erro exatamente sobre, em minha base de testes ele está funcionado corretamente...

Last edit: 2012-06-05 13:47:27
2012-06-05 03:47:04 Wanderley Guimarães
Alguns casos estăo M maior que o número de instruçőes na entrada, logo isso será arrumado
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.