| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1 초 | 1024 MB | 226 | 52 | 50 | 31.250% |
부 뎅클렉은 메기 양어장을 가지고 있다. 양어장은 $N \times N$ 격자칸 모양이다. 격자의 칸들은 같은 크기의 정사각형이다. 격자의 열들은 서쪽에서 동쪽으로 0ドル$부터 $N - 1$까지 번호가 붙어 있고, 행들은 남쪽에서 북쪽으로 0ドル$부터 $N - 1$까지 번호가 붙어있다. 열 $c,ドル 행 $r$에 (0ドル \le c \le N - 1,ドル 0ドル \le r \le N - 1$) 있는 칸을 칸 $(c, r)$로 부른다.
양어장에는 $M$ 마리의 메기가 있다. 메기들은 0ドル$부터 $M - 1$까지 번호가 붙어 있고, 모두 다른 칸에 있다. 각각의 $i$에 대해 (0ドル \le i \le M - 1$) 메기 $i$는 칸 $(X[i], Y[i])$에 있고, 그 무게는 $W[i]$그램이다.
부 뎅클렉은 메기를 잡기 위해 낚시터를 지으려고 한다. 열 $c$에 있는 길이 $k$인 낚시터는 (0ドル \le c \le N - 1,ドル 1ドル \le k \le N$), 열 $c$의 행 0ドル$부터 행$k - 1$까지를 덮는 직사각형이다. 즉, 낚시터는 칸들 $(c, 0), (c, 1), \ldots, (c, k - 1)$를 덮는다. 각 열에 대해서 부 뎅클렉은 특정한 길이의 낚시터를 짓거나, 낚시터를 전혀 짓지 않는 것 중 선택을 할 수 있다.
메기 $i$를 (0ドル \le i \le M - 1$) 잡기 위해서는 메기 $i$의 위치의 서쪽이나 동쪽에 인접한 칸을 낚시터가 덮어야 하며, 메기 $i$의 위치는 낚시터가 덮지 않아야 한다. 다시 말하면,
예를 들어, $N = 5$인 양어장에 $M = 4$마리의 메기가 있다고 하자.
부 뎅클렉이 낚시터를 지을 수 있는 방법 중 하나는 아래와 같다.
| 낚시터 짓기 전 | 낚시터 지은 후 |
|---|---|
칸에 표시된 자연수는 그 칸에 있는 메기의 무게이다. 색칠된 칸들이 낚시터에 덮인 곳이다. 이 경우 잡을 수 있는 메기는 메기 0ドル$(칸 $(0, 2)$에 위치)과 메기 3ドル$(칸 $(3, 3)$에 위치)이다. 메기 1ドル$(칸 $(1, 1)$에 위치)는 그 칸이 낚시터에 덮여 있어 잡을 수 없다. 메기 2ドル$(칸 $(4, 4)$에 위치)는 서쪽이나 동쪽에 인접한 칸이 낚시터로 덮인 것이 없어 잡을 수 없다.
부 뎅클렉은 잡을 수 있는 메기의 무게의 합이 가장 크도록 낚시터를 짓고 싶다. 잡을 수 있는 메기의 최대 무게 합을 계산하는 프로그램을 작성하라.
당신은 다음 함수를 구현해야 한다:
int64 max_weights(int N, int M, int[] X, int[] Y, int[] W)
다음 호출을 생각하자:
max_weights(5, 4, [0, 1, 4, 3], [2, 1, 4, 3], [5, 2, 1, 3])
이 예제는 위의 문제 설명에 있는 것과 같다.
문제 설명에 있는 것과 같이 낚시터를 지으면, 부 뎅클렉은 메기 0ドル$과 3ドル$을 잡을 수 있고, 무게의 합은 5ドル + 3 = 8$ 그램이다. 이 방법이 최선이며 함수는 8ドル$을 리턴해야 한다.
| 번호 | 배점 | 제한 |
|---|---|---|
| 1 | 3 | $X[i]$가 짝수 (0ドル \le i \le M - 1$) |
| 2 | 6 | $X[i] \le 1$ (0ドル \le i \le M - 1$) |
| 3 | 9 | $Y[i] = 0$ (0ドル \le i \le M - 1$) |
| 4 | 14 | $N \le 300,ドル $Y[i] \le 8$ (0ドル \le i \le M - 1$) |
| 5 | 21 | $N \le 300$ |
| 6 | 17 | $N \le 3000$ |
| 7 | 14 | 각 열에는 최대 2ドル$ 마리의 메기가 있다. |
| 8 | 16 | 추가적인 제한이 없다. |
샘플 그레이더는 다음 형식으로 입력을 읽는다:
샘플 그레이더는 다음 형식으로 답을 출력한다:
max_weights의 리턴 값Olympiad > International Olympiad in Informatics > IOI 2022 > Day 1 1번
C++17, C++20, C++17 (Clang), C++20 (Clang)