์ด ๋ฌธ์ ๋ ์ต๋ํ ๋ง์ด ๋ฐฐ๋ฌํด์ผ ํ๋ฏ๋ก ๋นจ๋ฆฌ ๋ฐฐ๋ฌํ ์ ์๋ ๊ฒ๋ค๋ถํฐ ๋นจ๋ฆฌ ๋ฐฐ๋ฌํ ์๋ก ๋ง์ด ๋ฐฐ๋ฌํ ์ ์๋ค.
(1) ๋ณด๋ด๋ ๊ณณ์์ ๋ฐ๋ ๊ณณ๊น์ง์ ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ์ฅ ์งง์ ์ (2) ํ๋ฐฐ์ ๊ฐ์์ ํฌ๊ธฐ๊ฐ ํฐ ์์๋๋ก ์ ๋ ฌํด์ผ ๋๋ค๊ณ ์๊ฐํ๋ค. ๊ทผ๋ฐ ์ ์ด์ (2)๋ ๊ณ ๋ คํ ํ์๊ฐ ์๋ ๋์์ด์๊ณ , (1) ๊ฐ์ ๊ฒฝ์ฐ๋ ์๋์ ๊ฐ์ด ๋๋๋ฐ
Arrays.sort(boxInfo, (a, b) -> {
return (a[1] - a[0]) - (b[1] - b[0]);
});
์ด๋ ๊ฒํ๋ฉด 52์ ์์ ํต๊ณผ๋ฅผ ๋ชปํ๋ค.
๊ทผ๋ฐ ์ ์๊ฐํด๋ณด๋ฉด ๋์ฐฉํ๋ ๊ณณ์ด ํญ์ ์ถ๋ฐํ๋ ๊ณณ๋ณด๋ค ์ซ์๊ฐ ํฌ๋ค๊ณ ํ์ผ๋ฏ๋ก a[1] ์ ํญ์ a[0] ๋ณด๋ค ํฌ๊ณ , b[1] ์ ํญ์ b[0] ๋ณด๋ค ํฌ๋ค. ๊ฒฐ๊ตญ a[1] - a[0] ์ ํญ์ ์์๊ฐ ๋๊ณ b[1] - b[0] ๋ ๋ง์ฐฌ๊ฐ์ง์ด๋ฏ๋ก ๋ ์ธ๋ฑ์ค ์ค ํ๋๋ง ๊ฐ์ง๊ณ ๋น๊ตํ๋ฉด ๋๋ ๊ฒ์ด๋ค.
Arrays.sort(boxInfo, (a, b) -> {
return a[1] - b[1];
});
์ด๋ฌ๋ฉด 100์ ๋๋ค.
๊ฒฐ๊ตญ ์ถ๋ฐ์ง~๋์ฐฉ์ง ์ฌ์ด์ ๊ฐ๊ฒฉ์ด ์ข๋ค๋ ๊ฑฐ๋ ๋์ฐฉ์ง๊ฐ ์์ชฝ์ ์๋๊ฑฐ๋ ๊ฐ๋ค๋ ์๋ฏธ๊ฐ ๋ ์ ์๋ค. ๋์ฐฉ์ง๊ฐ 1์ ๊ฐ๊น์ธ ์๋ก ์ถ๋ฐ์ง์ ๋์ฐฉ์ง์ ๊ฐ๊ฒฉ์ด ์งง์์ง๋ค๋ ์๋ฏธ. ์์์ ์ผ๋ก ์๊ฐํด๋ณด๋ฉด ๋์ฐฉ์ง๊ฐ 3์ธ๊ฒ ๋์ฐฉ์ง๊ฐ 6์ธ ๊ฒ๋ณด๋ค ์ถ๋ฐ์ง์์ ๊ฐ๊ฒฉ์ด ์งง์ ๊ฒ์ด๋ค.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int C = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(br.readLine());
int[][] boxInfo = new int[M][3];
for (int i = 0; i < M; i++) {
st = new StringTokenizer(br.readLine());
boxInfo[i][0] = Integer.parseInt(st.nextToken());
boxInfo[i][1] = Integer.parseInt(st.nextToken());
boxInfo[i][2] = Integer.parseInt(st.nextToken());
}
Arrays.sort(boxInfo, (a, b) -> {
return a[1] - b[1];
});
long[] road = new long[N];
long totalCnt = 0;
for (int[] box : boxInfo) {
int from = box[0];
int to = box[1];
int count = box[2];
long maxCnt = 0;
for (int i = from; i < to; i++) {
maxCnt = Math.max(maxCnt, road[i]);
}
long add = Math.min(count, C - maxCnt);
for (int i = from; i < to; i++) {
road[i] += add;
}
totalCnt += add;
}
System.out.println(totalCnt);
}
}