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

x
+
cmd
5
0
1
1
0
1

Output

x
+
cmd
1
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

x
+
cmd
5
0
1
1
0
1

Output

x
+
cmd
1
2
2
2
1
Advertisements

Demonstration


Previous
#2398 Beecrowd Online Judge Solution 2398 Caça ao Tesouro Solution in C, C++, Java, Js and Python
Next
#2400 Beecrowd Online Judge Solution 2400 Balé Solution in C, C++, Java, Js and Python