Algorithm
Problem Name: 2 AD-HOC - beecrowd | 2399
Problem Link: https://www.beecrowd.com.br/judge/en/problems/view/2399
Campo Minado
Por OBI - Olimpíada Brasileira de Informática 2011 Brazil
Timelimit: 1
Leonardo Viana é um garoto fascinado por jogos de tabuleiro. Nas férias de janeiro, ele aprendeu um jogo chamado "Campo minado", que é jogado em um tabuleiro comN células dispostas na horizontal. O objetivo desse jogo é determinar, para cada célula do tabuleiro, o número de minas explosivas nos arredores da mesma (que são a própria célula e as células imediatamente vizinhas à direita e à esquerda, caso essas existam). Por exemplo, a figura abaixo ilustra uma possível configuração de um tabuleiro com 5 células:
A primeira célula não possui nenhuma mina explosiva, mas é vizinha de uma célula que possui uma mina explosiva. Nos arredores da segunda célula temos duas minas, e o mesmo acontece para a terceira e quarta células; a quinta célula só tem uma mina explosiva em seus arredores. A próxima figura ilustra a resposta para esse caso.
Leonardo sabe que você participa da OBI e resolveu lhe pedir para escrever um programa de computador que, dado um tabuleiro, imprima o número de minas na vizinhança de cada posição. Assim, ele poderá conferir as centenas de tabuleiros que resolveu durante as férias.
Entrada
A primeira linha da entrada contém um inteiro N (1 ≤ N ≤ 50) indicando o número de células no tabuleiro. O tabuleiro é dado nas próximas N linhas. A i-ésima linha seguinte contém 0 se não existe mina na i-ésima célula do tabuleiro e 1 se existe uma mina na i-ésima célula do tabuleiro.
Saída
A saída é composta por N linhas. A i-ésima linha da saída contém o número de minas explosivas nos arredores da i-ésima célula do tabuleiro.
Exemplos de Entrada | Exemplos de Saída |
5 0 1 1 0 1 |
1 2 2 2 1 |
Code Examples
#1 Code Example with C Programming
Code -
C Programming
#include <stdio.h>
int main (void)
{
unsigned short i;
unsigned short qtsCells;
char campoMinado[] = { 0, 0, 0 };
scanf("%hu", &qtsCells);
for (i = 0; i < qtsCells + 1; ++i)
{
if (i < qtsCells)
scanf("%hhd", &campoMinado[i % 3]);
else
campoMinado[i % 3] = 0;
if (i > 0)
printf("%hhd\n", campoMinado[0] + campoMinado[1] + campoMinado[2]);
}
}
Copy The Code &
Try With Live Editor
Input
0
1
1
0
1
Output
2
2
2
1
#2 Code Example with C++ Programming
Code -
C++ Programming
#include <cstdio>
int vetor[1010];
int main() {
int n;
scanf("%d", &n);
for (int i = 1; i < = n; i++) {
int x;
scanf("%d", &x);
if (x) {
vetor[i - 1]++;
vetor[i]++;
vetor[i + 1]++;
}
}
for (int i = 1; i < = n; i++) printf("%d\n", vetor[i]);
return 0;
}
Copy The Code &
Try With Live Editor
Input
0
1
1
0
1
Output
2
2
2
1