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

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

게으른 소

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

요약
맨해튼 거리 K 안에 들어오는 풀의 합이 가장 커지는 시작점을 고릅니다.
난이도

보통10점 중 7점

유형
슬라이딩 윈도우, 정렬, 세그먼트 트리, 기하
정답자
아직 제출이 없습니다

문제

더운 여름날, 소 베시는 몹시 게으르다. 베시는 들판에서 자신의 위치를 정해, 짧은 거리 안에서 먹을 수 있는 풀이 최대한 많은 지점을 고른다.

베시의 들판에는 풀 패치가 NN개 있다 (1≤N≤100 0001 \le N \le 100\,000). 각 패치 ii에는 gig_i단위의 풀이 있고 (1≤gi≤10 0001 \le g_i \le 10\,000), 서로 다른 좌표 (xi,yi)(x_i, y_i)에 놓여 있다 (0≤xi,yi≤1 000 0000 \le x_i, y_i \le 1\,000\,000). 베시는 들판의 한 점을 시작 위치로 정한다. 이 점은 풀 패치 위일 수도 있고, 정수 좌표가 아닐 수도 있다. 시작 위치에서 KK보 이하(맨해튼 거리) 안에 있는 풀의 총량을 최대화하는 위치를 찾아야 한다 (1≤K≤2 000 0001 \le K \le 2\,000\,000).

베시가 한 보를 걸면 북, 남, 동, 서로 정확히 1단위 이동한다. 예를 들어 (0,0)(0,0)에서 (3,2)(3,2)까지는 5보가 필요하다. 보의 길이를 나눠 쓸 수 있다. 북쪽으로 0.5, 동쪽으로 0.5 이동하는 것도 한 보로 본다.

입력

  • 첫 줄: 정수 NN, KK
  • 다음 NN줄: 각 줄에 gig_i, xix_i, yiy_i (풀의 양과 좌표)

출력

한 줄에, 시작 위치를 최적으로 고를 때 KK보 이내에서 먹을 수 있는 풀의 최대 총량을 출력한다.

힌트

좌표를 (u,v)=(x+y,x−y)(u,v)=(x+y, x-y)로 바꾸면 맨해튼 거리 제한이 ∣u−u0∣≤K|u-u_0|\le K와 ∣v−v0∣≤K|v-v_0|\le K를 동시에 만족하는 직사각형 영역이 된다. uu로 정렬한 뒤 폭 2K2K 이내의 구간을 슬라이딩 윈도우로 훑고, 구간 안에서 vv에 대해 같은 방식으로 합을 계산하면 된다.

예제1

  1. 예제 1

    입력
    4 3
    7 8 6
    3 0 0
    4 6 0
    1 4 2
    
    예상 출력
    8