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

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

포스터 붙이기

시간 제한1초메모리 제한128 MB

요약
너비와 높이가 주어진 인접한 건물들이 이루는 하늘 모양을 겹치지 않는 직사각형으로 모두 덮는 최소 개수를 구한다.
난이도

보통10점 중 7점

유형
스택, 그리디
정답자
아직 제출이 없습니다

문제

바이트버그 동쪽 지구의 건물들은 모두 옛 방식으로 지어져서, 서로 사이에 빈틈 없이 바짝 붙어 있다. 이 건물들은 동쪽에서 서쪽으로 길게 이어지며, 높이가 제각각인 하나의 긴 건물 사슬을 이룬다.

바이트버그의 시장 바이트아사르는 이 사슬의 북쪽 면을 포스터로 덮으려고 한다. 그는 북쪽 면 전체를 덮는 데 필요한 포스터의 최소 개수가 궁금하다. 포스터는 각 변이 수직이거나 수평인 직사각형이다. 포스터끼리 겹칠 수는 없지만, 변끼리 닿는 것(경계에서 점을 공유하는 것)은 허용된다. 모든 포스터는 어떤 건물들의 벽에 빈틈없이 맞닿아야 하며, 북쪽 면 전체가 남김없이 덮여야 한다.

다음을 수행하는 프로그램을 작성하라.

  • 표준 입력에서 건물들의 정보를 읽는다,
  • 북쪽 면을 완전히 덮는 데 필요한 포스터의 최소 개수를 구한다,
  • 그 결과를 표준 출력에 쓴다.

입력

첫째 줄에 건물의 개수를 나타내는 정수 nn (1≤n≤250 0001 \le n \le 250\,000)이 주어진다. 이어지는 nn개의 줄에는 각각 두 정수 did_i와 wiw_i (1≤di,wi≤1091 \le d_i, w_i \le 10^9)가 공백 하나로 구분되어 주어지며, 이는 각각 줄에서 ii번째 건물의 너비와 높이를 뜻한다.

출력

건물들의 북쪽 면을 덮기에 충분한 직사각형 포스터의 최소 개수를 정수 하나로 출력한다.

힌트

아래 그림은 하나의 예시이다. 첫 번째 그림은 어떤 건물 사슬의 북쪽 면을 보여 주고, 두 번째 그림은 그 면을 포스터 4장으로 덮는 한 가지 방법을 보여 준다.

예제1

  1. 예제 1

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