배달
시간 제한2초메모리 제한1024 MB
직선 위 10^9개의 집에서 각각 정해진 시각과 위치에 배달해야 할 때, 어디서든 출발해 한 단위 시간에 한 집씩 움직이는 트럭의 최소 대수를 구한다.
문제
Mathew는 배달 회사의 사장이다. 그가 사는 도시에는 일직선으로 늘어선 정확히 채의 집이 있다. 각 집에는 번호가 붙어 있고, 번호가 인 집은 번호가 인 집, 인 집과 인접한다(그런 집이 존재할 경우). Mathew의 회사는 시각 에 집 로 배달하라는 요청을 건 받았다. 시각과 집이 모두 같은 두 요청은 없다. 돈을 아끼기 위해 Mathew는 모든 요청을 처리하는 데 트럭이 몇 대 필요한지 알고 싶어 한다. 그가 살 트럭은 1단위 시간 동안 왼쪽이나 오른쪽으로 1채만큼 이동할 수 있다(같은 집에 머무를 수도 있다). 처음에 트럭은 사장이 선택한 아무 집 앞에나 세워 둘 수 있다. 또한 배달에 걸리는 시간은 무시할 수 있다.
Mathew는 바빠서 이런 쉬운 일에 시간을 쓸 수 없으므로, 필요한 배달 트럭의 최소 대수를 구하는 프로그램을 작성해 달라고 당신에게 부탁했다.
입력
표준 입력의 첫째 줄에서 정수 을 읽는다. 은 요청의 수다. 다음 개 줄에는 각각 두 정수 와 가 주어진다. 이는 배달이 이루어져야 하는 시각과 집이다.
출력
한 줄에 필요한 배달 트럭의 최소 대수를 출력한다.
제한
- 이면 또는
힌트
필요한 배달 트럭의 최소 대수는 2이다. 모든 배달을 처리하는 한 가지 방법은 다음과 같다.
- 첫 번째 트럭: (1, 1)* → (2, 1) → (3, 1) → (4, 1)* → (5, 1)
- 두 번째 트럭: (1, 2) → (2, 3)* → (3, 2)* → (4, 3)* → (5, 4)*
여기서 (, )는 트럭이 시각 에 집 에 있음을 나타내고, *는 트럭이 배달을 하는 시각이다.