Submeter | Todas submissőes | Melhores | Voltar |
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: | 1s |
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 |