Housain é um terrorista que tentou escapar vindo para o Brasil. Mas Housain não contava com a astúcia de nossa polícia, e acabou sendo preso aqui também. Por ser terrorista, Housain conseguiu contratar advogados muito bons, que através de muitos recursos na justiça, acabaram conseguindo uma liberdade condicional para ele.
Nessa liberdade condicional, Housain deve permanecer a uma certa distância da delegacia de polícia responsável por ele. Para monitorá-lo melhor, eles instalaram nele uma tornozeleira eletrônica inquebrável que, minuto a minuto, envia para uma central as movimentações de Housain naquele momento. A informação da tornozeleira é enviada indicando uma direção e uma distância. Por exemplo, em quatro minutos chegam as quatro linhas de informação abaixo:
N 30
O 44
S 22
L 10
Isso significa que no primeiro minuto Housain deslocou 30 metros para o norte (letra N), no minuto seguinte andou 44 metros para o oeste (letra O), no outro minuto andou 22 metros para o sul (letra S) e no quarto minuto se deslocou 10 metros para o leste (letra L). Para poder dar um castigo ao terrorista, o juiz decidiu que Housain só poderia andar nas quatro direções citadas acima. Ou seja, Housain nunca se movimenta na direção noroeste, por exemplo. Neste problema, você pode supor que todos os movimentos de Housain ocorrem sobre um plano cartesiano.
A polícia precisa estar sempre atenta à movimentação dele, e pede a sua ajuda para verificar se em algum momento o terrorista se desloca a uma distância da delegacia maior do que a permitida. A distância considerada para esta medida é a distância euclidiana.
Sua missão é criar um programa que receba as informações da tornozeleira de Housain e diga se em algum momento ele esteve a uma distância maior do que a permitida. Você deve assumir que no instante 0 (zero) Housain está dentro da delegacia (ou seja, a uma distância zero).
Entrada:
A primeira linha da entrada contém dois inteiros N e M (1 ≤ N ≤ 105,1 ≤ M ≤ 106) representando o número de registros enviados pela tornozeleira de Housain e a distância máxima que ele pode ficar da delegacia, respectivamente. As N linhas seguintes contêm os registros da tornozeleira, em ordem de envio. Cada linha contém um caractere C ( C∈ {"N", "S", "L", "O"} ) e um inteiro D (1 ≤ D ≤ 103) representando a distância percorrida no minuto.
Saída:
Seu programa deve imprimir "sim" (sem aspas duplas) se em algum momento Housain se afastou da delegacia além da distância permitida, ou "nao" (sem aspas duplas) caso contrário.
Observações:
No primeiro exemplo de teste, os movimentos de Housain fazem com que ele esteja localizado nas seguintes coordenadas após cada movimentação: (0,2) → (3,2) → (3,−2) → (−1,−2) → (−4,−2). Em nenhum momento (minuto), durante a sua movimentação, Housain extrapola a distância M = 10 em relação à delegacia.
No segundo exemplo de teste, Housain se move conforme a seguinte ordem, (0,6) → (8,6) → (8,−9) → (3,−9) → (−1,−9). Quando Housain atinge a coordenada (8,−9), ele extrapola a distância M em relação à delegacia.
Soluções para a tarefa
'''
obs: não vou fazer a checagem de cada input, pois o enunciado não o coloca como obrigatorio,
é bem tranquilo faze-la, eu já fiz em vários exercícios que te mandei,
qualquer coisa, se o seu professor(a) achar necessário, é só adicionar dps.
'''
import math
primeira_linha = input()
primeira_linha = primeira_linha.split()
#número de registros
N = int(primeira_linha[0])
#distancia maxima
M = float(primeira_linha[1])
# X Y
localizacao_atual = [0, 0]
ultrapassou = False
def ultrapassou_o_limite(localizacao):
#fazer o calculo
distancia_euclidiana = math.sqrt(abs((localizacao[1] - localizacao[0]) ** 2))
if distancia_euclidiana >= M:
return True
else:
return False
for i in range(N):
input_ = input()
input_ = input_.split()
#pegar a direcao
direcao = input_[0].upper()
#pegar o quanto foi andado
distancia = int(input_[1])
if direcao == "N":
#somar a distancia para a linha Y
localizacao_atual[1] += distancia
if ultrapassou_o_limite(localizacao_atual):
ultrapassou = True
elif direcao == "S":
#subtrair a distancia para a linha Y
localizacao_atual[1] -= distancia
if ultrapassou_o_limite(localizacao_atual):
ultrapassou = True
elif direcao == "L":
#somar a distancia para a linha X
localizacao_atual[0] += distancia
if ultrapassou_o_limite(localizacao_atual):
ultrapassou = True
elif direcao == "O":
#subtrair a distancia para a linha X
localizacao_atual[0] -= distancia
if ultrapassou_o_limite(localizacao_atual):
ultrapassou = True
if ultrapassou:
print("sim")
else:
print("nao")