아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

배달

시간 제한2초메모리 제한1024 MB

요약
직선 위 10^9개의 집에서 각각 정해진 시각과 위치에 배달해야 할 때, 어디서든 출발해 한 단위 시간에 한 집씩 움직이는 트럭의 최소 대수를 구한다.
난이도

어려움10점 중 8점

유형
그리디, 정렬, 수학, 구현
정답자
아직 제출이 없습니다

문제

Mathew는 배달 회사의 사장이다. 그가 사는 도시에는 일직선으로 늘어선 정확히 10910^9채의 집이 있다. 각 집에는 번호가 붙어 있고, 번호가 ii인 집은 번호가 i−1i - 1인 집, i+1i + 1인 집과 인접한다(그런 집이 존재할 경우). Mathew의 회사는 시각 TiT_i에 집 HiH_i로 배달하라는 요청을 NN건 받았다. 시각과 집이 모두 같은 두 요청은 없다. 돈을 아끼기 위해 Mathew는 모든 요청을 처리하는 데 트럭이 몇 대 필요한지 알고 싶어 한다. 그가 살 트럭은 1단위 시간 동안 왼쪽이나 오른쪽으로 1채만큼 이동할 수 있다(같은 집에 머무를 수도 있다). 처음에 트럭은 사장이 선택한 아무 집 앞에나 세워 둘 수 있다. 또한 배달에 걸리는 시간은 무시할 수 있다.

Mathew는 바빠서 이런 쉬운 일에 시간을 쓸 수 없으므로, 필요한 배달 트럭의 최소 대수를 구하는 프로그램을 작성해 달라고 당신에게 부탁했다.

입력

표준 입력의 첫째 줄에서 정수 NN을 읽는다. NN은 요청의 수다. 다음 NN개 줄에는 각각 두 정수 TiT_i와 HiH_i가 주어진다. 이는 배달이 이루어져야 하는 시각과 집이다.

출력

한 줄에 필요한 배달 트럭의 최소 대수를 출력한다.

제한

  • 1≤N≤1061 ≤ N ≤ 10^6
  • 1≤Ti,Hi≤1091 ≤ T_i, H_i ≤ 10^9
  • i≠ji \ne j이면 Ti≠TjT_i \ne T_j 또는 Hi≠HjH_i \ne H_j

힌트

필요한 배달 트럭의 최소 대수는 2이다. 모든 배달을 처리하는 한 가지 방법은 다음과 같다.

  • 첫 번째 트럭: (1, 1)* → (2, 1) → (3, 1) → (4, 1)* → (5, 1)
  • 두 번째 트럭: (1, 2) → (2, 3)* → (3, 2)* → (4, 3)* → (5, 4)*

여기서 (tt, hh)는 트럭이 시각 tt에 집 hh에 있음을 나타내고, *는 트럭이 배달을 하는 시각이다.

예제1

  1. 예제 1

    입력
    6
    1 1
    2 3
    3 2
    5 4
    4 1
    4 3
    
    예상 출력
    2