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

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

좌석 배정

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

요약
각 승객은 배정된 열에서 s_i행 이내의 행에 있는 좌석이면 열에 상관없이 받아들일 때, 좌석을 받는 승객 수의 최댓값을 구한다.
난이도

보통10점 중 7점

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

문제

Divided Airlines라는 항공사가 최근에 지나치게 공격적으로 초과 예약을 하는 것으로 뉴스에 올랐다. 어떤 항공편에서는 승객을 비행기 밖으로 끌어내기까지 했다! 이는 당연히 인기가 없었기 때문에, 항공사는 좌석 배정을 매우 혼란스럽게 만들어 문제를 "해결"하기로 했다(항공사는 불필요한 복잡성을 좋아한다).

어떤 항공편에는 승객이 nn명 있다. 좌석은 각각 cc개의 좌석을 가진 rr개의 열로 나뉜다. 각 승객 ii는 a_ia\_i번째 열의 b_ib\_i번째 좌석에 배정된다. 하지만 여러 승객이 같은 좌석에 배정될 수도 있다.

승객들은 보통 자신이 배정된 좌석이 아닌 다른 곳에 앉아도 괜찮아하지만, 원래 좌석에서 어느 정도는 가까이 있고 싶어할 수 있다. 아마 친구와 이야기하고 싶거나, 머리 위 짐칸 근처에 앉고 싶어할 것이다. 더 구체적으로, 승객 ii는 티켓에 적힌 열에서 최대 s_is\_i개 열만큼 떨어진 곳에 앉는 것을 허용한다.

예산상의 이유로 당신은 Divided 항공편을 타기로 했다. 예상대로 초과 예약된 좌석에 배정된 모든 승객이 서로 싸우기 시작했고, 복잡하게 움직이며 긴 지연을 일으켰다. 당신은 공정한 해결책을 제안했다: 승객이 배정된 좌석에서 얼마나 멀리 앉는 것을 허용하는지를 고려하여, 가능한 많은 승객이 좌석을 받도록 좌석 배정을 구성하겠다고 했다. 이제 남은 것은 이 배정을 실제로 찾는 것이다.

입력

입력은 다음과 같다:

  • 정수 nn, rr, cc가 있는 한 줄(1≤n,r,c≤1051 \le n, r, c \le 10^5). 각각 승객 수, 항공편의 열 수와 좌석 수이다.
  • 정수 a_ia\_i, b_ib\_i, s_is\_i가 있는 nn개의 줄(1≤a_i≤r1 \le a\_i \le r, 1≤b_i≤c1 \le b\_i \le c, 0≤s_i≤r0 \le s\_i \le r). ii번째 줄에는 ii번째 승객의 배정된 열 a_ia\_i, 좌석 b_ib\_i, 최대 거리 s_is\_i가 있다. 최대 거리는 열 단위로 주어진다.

출력

최적의 배정에서 좌석을 받을 수 있는 승객의 최대 수를 출력한다.

예제3

  1. 예제 1

    입력
    3 2 1
    1 1 0
    1 1 1
    2 1 0
    
    예상 출력
    2
    
  2. 예제 2

    입력
    3 3 1
    1 1 0
    1 1 1
    1 1 2
    
    예상 출력
    3
    
  3. 예제 3

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