격자 위 타일에 도착하면 에너지를 얻고 이동에는 B가 들 때, 오른쪽이나 위로만 점프해 타일 N에 도착했을 때 남는 에너지의 최댓값을 구한다.
보통7동적 계획법그래프정렬아직 제출이 없습니다시간 제한2초메모리 제한512 MB2차원 평면에 타일 N개가 놓여 있다. i번 타일의 좌표는 (xi,yi)이고, 그 위에는 점프 에너지를 ei만큼 채워 주는 에너지 통이 하나 있다.
점프는 오른쪽 또는 위쪽으로만 한다. 타일 (x1,y1)에서 타일 (x2,y2)로 점프하려면 y1=y2이면서 x1<x2이거나(오른쪽), x1=x2이면서 y1<y2여야 한다(위쪽). 두 타일이 서로 붙어 있을 필요는 없고, 같은 행이나 같은 열에서 그 방향에 있는 타일이면 어디로든 점프할 수 있다. 타일이 없는 곳으로는 점프하지 못한다.
점프를 한 번 할 때마다 에너지를 B만큼 쓴다. 에너지가 B보다 적으면 점프할 수 없다. 새 타일에 도착하면 곧바로 그 타일의 에너지 통을 얻어 에너지가 ei만큼 늘어난다.
출발 지점은 1번 타일이고, 출발할 때 에너지는 e1이다. 1번 타일에서 N번 타일까지 점프해서 이동하되, N번 타일에 도착했을 때 남는 에너지를 최대로 만들어야 한다.
N번 타일에 도착했을 때 가질 수 있는 최대 에너지를 구하는 프로그램을 작성하시오.
첫째 줄에 테스트 케이스의 개수 T가 주어진다. (1≤T≤10)
각 테스트 케이스의 첫째 줄에는 두 정수 N과 B가 주어진다. (2≤N≤300000, 1≤B≤1000)
이어지는 N개 줄에는 1번 타일부터 N번 타일까지의 정보가 순서대로 주어진다. 각 줄에는 세 정수 xi, yi, ei가 주어진다. (0≤xi,yi≤100000, 0≤ei≤1000)
좌표가 같은 타일은 없다. 에너지 규칙을 지키면서 1번 타일에서 N번 타일까지 갈 수 있는 점프 순서가 적어도 하나 존재한다.
각 테스트 케이스마다 N번 타일에 도착했을 때 가질 수 있는 최대 에너지를 한 줄에 하나씩 출력한다.