Solução Informática Iniciante - Semana 45

Solução de Frederico Bulhões

Para resolver esse problema devemos usar vetores para marcar, os lugares onde cairam os raios. Cada vez que um raio cai na posição (i,j), somamos em em d[i][j]. Depois passamos em todas as posições possíveis para raios caírem, e caso o valor de d[i][j] seja maior que 1 a resposta é 1, senão é 0.

Código para melhor entendimento:


//solucao de Davi Gabriel
#include <bits/stdc++.h>
using namespace std;
const int MAXY = 505;
//Declaro MAXY sendo o valor máximo de x, y = 500
int mark[MAXY][MAXY]; //Crio a matriz dos nossos quadrantes
//Inicialmente cada posição dessa matriz é 0
int main() {
int n, x, y;
cin >> n;
bool atingido = 0; //Nossa resposta sera "atingido" que retorna
//0 se for um mito e 1 se for verdade
for(int i = 0; i < n; i++){
cin >> x >> y; //Leio as coordenadas do quadrante atingido pelo raio
if(mark[x][y] == 0){ //Se nenhum raio tiver atingido este quadrante
mark[x][y] = 1; //Marco que ele foi atingido
}
else{ //Se ele já tiver sido atingido, então não é um mito
atingido = 1;
}
}
cout << atingido << "\n";
return 0;
}

view raw

mitos.cpp

hosted with ❤ by GitHub