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.|

TV - TV da Vovó

A vovó tem um televisor muito antigo, que ultimamente está exibindo um defeito incômodo: a imagem aparece 'deslocada’ (para cima ou para baixo, para o lado direito ou para o lado esquerdo). Quando a imagem está deslocada para cima, a parte da imagem que deixa de ser vista na parte superior reaparece na parte de baixo da tela. Da mesma forma, quando a imagem está deslocada a direita, a parte da imagem que deixa de ser vista à direita reaparece na tela do lado esquerdo.

A imagem do televisor pode ser vista como uma matriz de pontos organizados em linhas e colunas. Para consertar o televisor da vovó, você pode ajustar a imagem introduzindo uma série de 'comandos de correção’ em um painel de ajuste. Cada comando de correção desloca a imagem de um certo número de linhas (para cima ou para baixo) e um certo número de colunas (para a direita ou para a esquerda).

Tarefa

Dada uma matriz que representa uma imagem defeituosa e uma série de comandos de correção, seu programa deve calcular a matriz que representa a imagem resultante após todos os comandos terem sido aplicados sequencialmente.

Entrada

A entrada possui vários conjuntos de teste. Cada conjunto de teste inicia com a descrição da matriz que representa a imagem do televisor. A primeira linha contém dois inteiros M e N representando o número de linhas e o número de colunas da matriz (1 <= M <= 1000 e 1 <= N <= 1000). As M linhas seguintes da entrada contém cada uma N inteiros, descrevendo o valor de cada ponto da imagem. Após a descrição da imagem, segue-se a descrição dos comandos de correção. Cada comando de correção é descrito em uma linha contendo dois inteiros X e Y. O valor de X representa o deslocamento na direção horizontal (valor positivo representa deslocamento para a direita, valor negativo para a esquerda), e o valor de Y representa o deslocamento da direção vertical (valor positivo para cima, valor negativo para baixo). O final da lista de comandos é indicado por X = Y = 0, e o final da entrada é indicado por M = N = 0.

Exemplo de Entrada
3 3
1 2 3
4 5 6
7 8 9
1 0
1 -1
0 0
3 4
6 7 8 5
10 11 12 9
2 3 4 1
-3 2
0 0
0 0

Saída

Para cada conjunto de teste, o seu programa deve produzir uma imagem na saída. A primeira linha da saída deve conter um identificador do conjunto de teste, no formato "Teste n", onde n é numerado seqüencialmente a partir de 1. A seguir deve aparecer a matriz que representa a imagem resultante, no mesmo formato da imagem de entrada. Ou seja, as N linhas seguintes devem conter cada uma M inteiros que representam os pixels da imagem. Após a imagem deixe uma linha em branco. A grafia mostrada no Exemplo de Saída, abaixo, deve ser seguida rigorosamente.

Exemplo de Saída
Teste 1
8 9 7
2 3 1
5 6 4

Teste 2
1 2 3 4
5 6 7 8
9 10 11 12

(esta saída corresponde ao exemplo de entrada acima)

Restricões

0 <= N <= 1000 (N = 0 apenas para indicar o final da entrada)
0 <= M <= 1000 (M = 0 apenas para indicar o final da entrada)
0 <= X <= 1000
0 <= Y <= 1000
0 <= número de comandos de correção em cada conjunto de teste <= 1000


Adicionado por:Wanderley Guimarăes
Data:2007-03-07
Tempo limite:0.121s
Tamanho do fonte:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Linguagem permitida:Todas exceto: ASM64 CLOJURE ERL FSHARP JS-RHINO NODEJS PERL6 PY_NBC SCALA TCL VB.NET
Origem:Olimpiada Brasileira de Informatica 2004

hide comments
2016-04-09 00:17:29 Elsio [UFABC]
Mais um daqueles problemas que o problema de tempo de execução é resolvido simplesmente trocando o cin por scanf.

e ISSO É UM ABSURDO!
horas perdidas com a certeza de que a lógica está certa.
2014-05-16 23:07:02 Rafael Magalhães
O meu está certinho e só fica dando respósta errada.. =/
2014-02-17 06:08:55 Israel Barbará
Esta dando erro de compilaçao mas no meu pc roda tranquilo usando ubuntu
2012-01-14 22:59:43 Ruanito Santos
uma dica
for(i = 0; i < m; i++){
for(j = 0; j < n-1; j++){
printf("%d ", tv[(i + y_total) % m][(j + x_total) % n]);
}
printf("%d\n", tv[(i + y_total) % m][(n-1 + x_total) % n]);
}
2011-09-11 23:45:51 thiagojobson [UERN]
Poxa, năo me toquei que ajustar tudo no final é bem melhor do que comando por comando ^^
2011-05-24 16:21:38 Hugo Joaquim Maia
A lógica do problema leva algumas tentativas, mas o tempo de execuçăo é o que mata.
Alguém sabe que técnica de otimizaçăo faz o código funcionar?
2011-05-19 17:44:09 [ UERN - UFPB ] Thalles Robson
Foi o problema mais dificil que resolvi. A logica é facil, mas estava tomando ERRO EM TEMPO DE EXECUÇĂO sabe-se lah em que parte do codigo.
2011-04-01 05:35:31 Gabriel Almeida Gonçalves
A descriçăo do problema inverte M e N como linhas e colunas em entrada e saida
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.