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 com N 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.
Exemplo
Entrada | Saída |
5 0 1 1 0 1 | 1 2 2 2 1 |
5 0 1 1 1 0 | 1 2 3 2 1 |
Solução em C/C++
#include <stdio.h>
int main(void) {
int i, N;
scanf("%i", &N);
int tabuleiro[N+1];
//Ler o tabuleiro
for (i=1; i<=N; i++) {
scanf("%i", &tabuleiro[i]);
}
//computa o resultado
for (i=1; i<=N; i++) {
if (i == 1) { //se for a primeira posição
if (N <= i) { //se o tabuleiro tem apenas 1 posição
printf("%i\n", tabuleiro[i]);
} else {
printf("%i\n", tabuleiro[i]+tabuleiro[i+1]);
}
} else if (i == N) { //se for a última posição
printf("%i\n", tabuleiro[i]+tabuleiro[i-1]);
} else {
printf("%i\n", tabuleiro[i-1]+tabuleiro[i]+tabuleiro[i+1]);
}
}
return 0;
}
Teste o código: http://ideone.com/eodrXr