포럼
문제 COCI00065

Barica

스페셜 저지 — 출력을 사용자 정의 프로그램으로 검사하므로 여러 정답이 인정될 수 있습니다.
설명

Barica는 특이한 개구리이다. 그녀는 수면에 \(N\)개의 수초가 떠 있는 연못에 산다. 수초에는 \(1\)부터 \(N\)까지 번호가 붙어 있다. 위에서 내려다볼 때 각 수초의 위치는 좌표 쌍으로 주어진다. Barica가 특이한 점은 대각선 방향과 음의 방향으로 뛰는 것을 무서워한다는 것이다. 더 정확히 말하면, 그녀는 좌표 \((x_1, y_1)\)의 수초에서 좌표 \((x_2, y_2)\)의 수초로 다음 경우에만 뛸 수 있다:

  • \(x_2 > x_1\)이고 \(y_2 = y_1\), 또는
  • \(y_2 > y_1\)이고 \(x_2 = x_1\)

각 수초에 대해 그 주변에 있는 파리의 수를 알고 있다. Barica는 재빠른 혀로 자기가 있는 수초 근처의 파리를 전부 잡아먹을 수 있다.

Barica는 파리 한 마리를 먹을 때마다 에너지 1단위를 얻고, 뛸 때마다 에너지 \(K\)단위를 쓴다. 뛰기 전에 에너지가 충분하지 않으면 뛸 수 없다.

Barica는 수초 \(1\)에서 수초 \(N\)으로 가되, 도착했을 때 남은 에너지가 최대가 되기를 원한다. Barica는 처음에 에너지가 없으며, 첫 점프를 위한 에너지는 수초 \(1\) 주변의 파리에게서 모아야 한다.

Barica가 목표를 이루기 위해 지나야 하는 수초들의 순서를 구하시오.

제약
입력 형식

입력의 첫째 줄에 공백으로 구분된 두 정수 \(N\)\(K\) (\(2 \le N \le 300\,000\), \(1 \le K \le 1000\))가 주어진다.

다음 \(N\)개의 줄에는 공백으로 구분된 세 정수 \(X\), \(Y\), \(F\) (\(0 \le X, Y \le 100\,000\), \(0 \le F \le 1000\))가 주어진다. 좌표 \((X, Y)\)에 수초가 있고 그 주변에 파리가 \(F\)마리 있다는 뜻이다. 입력의 첫 번째 수초가 수초 \(1\), 두 번째가 수초 \(2\)인 식이다.

좌표 쌍이 같은 두 수초는 없다.

참고: 입력 데이터는 점프 순서가 항상 존재함을 보장한다. 단, 유일하지 않을 수도 있다.

출력 형식

첫째 줄에 최종 에너지를 출력한다.

정수 \(L\), 즉 수초 \(1\)\(N\)을 포함하여 Barica가 지나야 하는 수초의 개수를 출력한다.

다음 \(L\)개의 줄에 Barica가 지나야 하는 수초들의 좌표를 순서대로 출력한다.

서브태스크
서브태스크점수설명

Subtask 1

70점
예제 1
입력
6 5
1 1 5
2 1 5
1 2 4
2 3 5
3 2 30
3 3 5
출력
5
4
1 1
2 1
2 3
3 3
예제 2
입력
8 10
1 1 15
2 2 30
1 2 8
2 1 7
3 2 8
2 3 7
4 2 100
3 3 15
출력
36
5
1 1
1 2
2 2
3 2
3 3
예제 3
입력
9 5
5 5 10
6 5 2
7 5 1
5 6 2
6 6 6
7 6 2
5 7 1
6 7 2
7 7 1
출력
2
3
5 5
7 5
7 7
문제 정보

riseoj 작성

출처 COCI 2007/2008 Contest 5

평가 및 의견

Barica

개요
출제자 난이도 Unrated 레이팅 미적용 의견 0 / 1 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

Barica

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8