Algorithm


Problem Name: 2 AD-HOC - beecrowd | 2411

Problem Link: https://www.beecrowd.com.br/judge/en/problems/view/2411

O Tabuleiro Esburacado

 

Por OBI - Olimpíada Brasileira de Informática 2012 BR Brazil

Timelimit: 1

Um tabuleiro normal, 8 x 8, foi danificado, e 4 posições ficaram esburacadas. A Figura 1(a) mostra o tabuleiro. A posição inferior esquerda tem coordenadas (0, 0). Os 4 buracos estão marcados em preto, e têm coordenadas (1, 3), (2, 3), (2, 5) e (5, 4). Um cavalo de xadrez foi colocado na posição (4, 3), marcada como 0 no tabuleiro.

Os 8 movimentos de um cavalo estão numerados de 1 a 8 na Figura 1(b), a partir da posição marcada como 0. Por exemplo, se o cavalo estiver na posição inicial (4, 3), o movimento 7 leva o cavalo à posição (2, 4), sem cair no buraco (2, 3), porque o cavalo salta da posição (4, 3) para a posição (2, 4).

Seu problema é simular um passeio do cavalo, dados os movimentos através dos números de 1 a 8 e determinar quantos movimentos o cavalo faz até ou (i) terminar o passeio ou (ii) cair em um buraco. Por exemplo, na trajetória dada pelos 5 movimentos 1, 8, 5, 3, 4, o cavalo passa pelas posições (5, 5), (4, 7), (3, 5) e cai no buraco (5, 4), fazendo portanto apenas 4 movimentos.

Já no passeio dado pelos 3 movimentos 6, 8, 1, o cavalo passa pelas posições (2, 2), (1, 4) e (2, 6) e não cai em nenhum buraco: portanto, perfaz todos os 3 movimentos do passeio.

 

Entrada

 

A primeira linha da entrada contém N (1 ≤ N ≤ 100), o número de movimentos do passeio. A segunda linha contém N inteiros M1, M2, . . . , MN (1 ≤ MI ≤ 8, para I = 1, 2, . . . , N) , separados por um espaço em branco, correspondentes aos N movimentos do cavalo no passeio. Um movimento pode levar o cavalo a cair em um buraco, mas nunca leva o cavalo a sair do tabuleiro.

 

Saída

 

Seu programa deve imprimir uma única linha, contendo um único número inteiro, o número de movimentos do cavalo até terminar o passeio ou o cavalo cair em um buraco.

 

 

 

Exemplos de Entrada Exemplos de Saída

5

1 8 5 3 4

4

 

Code Examples

#1 Code Example with C++ Programming

Code - C++ Programming


#include <cstdio>
int main() {
    int x = 4, y = 3, resposta = 0;
    bool possivel = true;
    int n;
    scanf("%d", &n);
    for (int i = 0; i  <  n; i++) {
        int m;
        scanf("%d", &m);
        if (!possivel) continue;
        if (m == 1) {
            x += 1;
            y += 2;
        } else if (m == 2) {
            x += 2;
            y += 1;
        } else if (m == 3) {
            x += 2;
            y -= 1;
        } else if (m == 4) {
            x += 1;
            y -= 2;
        } else if (m == 5) {
            x -= 1;
            y -= 2;
        } else if (m == 6) {
            x -= 2;
            y -= 1;
        } else if (m == 7) {
            x -= 2;
            y += 1;
        } else {
            x -= 1;
            y += 2;
        }
        if (x == 1 && y == 3) possivel = false;
        if (x == 2 && y == 3) possivel = false;
        if (x == 2 && y == 5) possivel = false;
        if (x == 5 && y == 4) possivel = false;
        resposta++;
    }
    printf("%d\n", resposta);
    return 0;
}
Copy The Code & Try With Live Editor

Input

x
+
cmd
5
1 8 5 3 4

Output

x
+
cmd
4
Advertisements

Demonstration


Previous
#2410 Beecrowd Online Judge Solution 2410 Frequencia na Aula Solution in C, C++, Java, Js and Python
Next
#2413 Beecrowd Online Judge Solution 2413 Busca na Internet Solution in C, C++, Java, Js and Python