Solução Informática Iniciante – Semana 45

por

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

Comentários

Comente