https://www.acmicpc.net/problem/6612
시간 1초, 메모리 128MB
input :
output :
T는 마지막 개미가 떨어진 시간, P는 그 개미가 시간 0 때 있었던 위치이다.
두 개미가 동시에 떨어지는 경우에는 "started at P and Q"를 출력한다. (P < Q)
조건 :
개미는 1초에 1cm씩 앞으로 전진
두 개미가 같은 곳에서 만나게 되면, 즉시 방향을 바꾸고 반대 방향으로 전진
개미가 나무의 끝에 도착하게 되면, 개미는 땅으로 떨어지고
위의 문제와 동일한 문제이다.
그러나 위치가 증가하는 순서가 아니기 때문에 이에 대한 정렬이 수행되어야 함.
출력시에는 동일한 속도로 이동해서 떨어지는 경우에만 2개를 비교해서 출력해야 함. 그 외의 경우에는 그냥 "-1"에 위치한 놈을 출력하면 됨.
import sys
while True:
try:
l, a = map(int, input().split())
ids, left, right = [], [], []
for _ in range(a):
x, tow = sys.stdin.readline().split()
x = int(x)
ids.append(x)
if tow == "L":
left.append(x)
else:
right.append(l - x)
ids.sort()
left.sort()
right.sort(reverse=True)
move = left + right
ans = [(move[i], ids[i]) for i in range(a)]
ans.sort()
if len(ans) >= 2 and ans[-1][0] == ans[-2][0]:
p = min(ans[-1][1], ans[-2][1])
q = max(ans[-1][1], ans[-2][1])
print(f"The last ant will fall down in {ans[-1][0]} seconds - started at {p} and {q}.")
else:
print(f"The last ant will fall down in {ans[-1][0]} seconds - started at {ans[-1][1]}.")
except EOFError:
break