λ°±μ€ 11000 : κ°μμ€ λ°°μ
μκ°μ μ²μ λ§μ€ν° κΉμ’ ν μ μλμκ² μλ‘μ΄ κ³Όμ κ° μ£Όμ΄μ‘λ€.
κΉμ’ ν μ μλνν λ Siμ μμν΄μ Tiμ λλλ Nκ°μ μμ μ΄ μ£Όμ΄μ§λλ°, μ΅μμ κ°μμ€μ μ¬μ©ν΄μ λͺ¨λ μμ μ κ°λ₯νκ² ν΄μΌ νλ€.
μ°Έκ³ λ‘, μμ μ΄ λλ μ§νμ λ€μ μμ μ μμν μ μλ€. (μ¦, Ti β€ Sj μΌ κ²½μ° i μμ κ³Ό j μμ μ κ°μ΄ λ€μ μ μλ€.)
μκ°μ μ² λμΆ©ν κ² μ°λ¦¬λ©΄, μ μλμ λμλ리μ!
첫 λ²μ§Έ μ€μ Nμ΄ μ£Όμ΄μ§λ€. (1 β€ N β€ 200,000)
μ΄ν Nκ°μ μ€μ Si, Tiκ° μ£Όμ΄μ§λ€. (0 β€ Si < Ti β€ 10^9)
κ°μμ€μ κ°μλ₯Ό μΆλ ₯νλΌ.
3
1 3
2 4
3 5
2
μ²μμ λ νμ΄λ²μμ, Ti λ§νΌμ 1μ°¨μ λ°°μ΄μ λ§λ€μ΄μ κ°μμ€μ μ°¨μ§νλ μκ°μ μ«μλ‘ ννν κΉ?μλ€.
λ§μ½ 1~3μ μμ
μ΄λΌλ©΄ 1λ²λ°°μ΄λΆν° 3λ²λ°°μ΄κΉμ§ 1λ‘ μ±μ΄ ν, λ€μ κ°μμκ°μ΄ μ΄μ κ³Ό κ²ΉμΉλ©΄ +1μ ν΄μ 2λ‘ μ±μ°λ κ²μ΄λ€. κ·Έλ¦¬κ³ μ΅μ’
μ μΌλ‘, λ°°μ΄μ λ€μ΄κ° κ°μ₯ ν° μ«μκ° νμν κ°μμ€ κ°μκ° λλ€κ³ μκ°νλ€.
νμ§λ§ μμνκ² μ§λ§ μ΄ νμ΄μ λ¬Έμ μ μ...
Siμ Tiμ μ
λ ₯κ°μ λ²μκ° 10^9μ΄λΌλ κ²μ΄λ€. 10^9 ν¬κΈ°λ₯Ό κ°μ§ λ°°μ΄μ λͺ λ² λλ©΄ λΉμ°ν μκ°, λ©λͺ¨λ¦¬ μ΄κ³Όκ° λ°μνλ€.
GPTμκ² λ¬Όμ΄λ³΄μμ μ°Ύμ λ°©λ²μ μ°μ μμνλ₯Ό μ΄μ©ν΄μ 'μ§κΈκ°μ'μ 'λ€μμ μμ κ°μ'λ₯Ό λΉκ΅ν΄μ
μ§κΈ κ°μμ λλλ μκ°μ΄ λ€μμ μμνλ κ°μμ μμνλ μκ°λ³΄λ€ μκ±°λ κ°μΌλ©΄
νμμ λΉΌκ³ (μλ‘μ΄ κ°μμ€μ μΆκ°νμ§ μκ³ ), κ·Έλ μ§ μμΌλ©΄ νμ μ μ₯(μλ‘μ΄ κ°μμ€μ μΆκ°)νλ κ²μ΄λ€.
μ΄ κ³Όμ μ κ±°μΉκ³ μ΅μ’ μ μΌλ‘ νμ ν¬κΈ°λ₯Ό ꡬνλ©΄ κ·Έκ²μ΄ νμν κ°μμ€μ κ°μκ° λλ κ²μ΄λ€.
κ°μμ μμμκ°, λλλ μκ°μ λ΄μ 2μ°¨μ λ°°μ΄μ μμ±νλ€.
Nκ°μ κ°μμ μμ, λ μμμ λ΄μΌλ λ°°μ΄μ ν¬κΈ°λ μλμ κ°λ€.
lecture[N][2]
//λ°°μ΄ μμ±νκΈ°
int[][] lectures = new int[N][2];
for (int i = 0; i < N; i++) {
//μ
λ ₯κ° λ°κΈ°
StringTokenizer st = new StringTokenizer(br.readLine());
int S = Integer.parseInt(st.nextToken());
int T = Integer.parseInt(st.nextToken());
//λ°°μ΄μ μ μ₯νκΈ°
lectures[i][0] = S;
lectures[i][1] = T;
}
'μ§κΈ κ°μ'μ 'λ€μ μμ κ°μ' λ€μ λΉκ΅νλ κ²μ΄κΈ° λλ¬Έμ κ°μ μκ°μ΄ λΉ λ₯Έ μμλλ‘ μ λ ¬ν΄μ€λ€.
Arrays.sort(lectures, (a, b) -> a[0] - b[0]);
μ κ°μμ€μ΄ νμν μμ μ λ΄μ μ°μ μμ νλ₯Ό μμ±νκ³ , μ΄κΈ°κ°μΌλ‘ 첫λ²μ§Έ μμ μ λλλ μκ°μ λ£λλ€.
PriorityQueue<Integer> pq = new PriorityQueue<>();
pq.offer(lectures[0][1]);
λ°λ³΅λ¬Έμ λλ©΄μ νμ¬ κ°μμ λλλ μκ°κ³Ό λ€μ κ°μλ€μ μμ μκ°μ λΉκ΅νλ€.
λ§μ½, νμ¬ κ°μμ μ’
λ£μκ°μ΄ λ€μ κ°μλ€μ μκ°μκ° λ³΄λ€ μκ±°λ κ°μΌλ©΄
μμ
μ΄ κ²ΉμΉμ§ μλλ€λ μλ―Έμ΄κΈ° λλ¬Έμ μ κ°μμ€μ΄ νμνμ§ μλ€.
μ΄λ¬ν κ²½μ°μ νμμ λΊλ€.
λ§μ½ μμ κ²½μ°κ° μλλ©΄ μ κ°μμ€μ΄ νμνλ€λ μλ―Έμ΄κΈ° λλ¬Έμ νμ λ¨κ²¨λλ€.
κ·Έλ¦¬κ³ λ€μ κ°μμ μ’ λ£μκ°μ νμ λ£κ³ λ°λ³΅νλ€.
for (int i = 1; i < N; i++ ) {
//λ€μ κ°μμ μμμκ°κ³Ό μ’
λ£μ
int start = lectures[i][0];
int end = lectures[i][1];
//νμ¬ κ°μμ μ’
λ£μκ° <= λ€μ κ°μμ μμ
if (pq.peek() <= start) {
pq.poll(); //κ²ΉμΉμ§ μκΈ° λλ¬Έμ νμμ λΉΌλ²
}
//λ€μκ°μμ μ’
λ£ μκ°μ λ£
pq.add(end);
}
4λ²μ κ³Όμ μμ μ κ°μμ€μ΄ νμν κ²½μ°μλ§ νμ λ¨κ²¨λμκΈ° λλ¬Έμ, μ΅μ’ μ μΈ νμ ν¬κΈ°λ₯Ό ꡬνλ©΄ κ·Έκ²μ΄ νμν κ°μμ€μ κ°μκ° λλ€
//νμ ν¬κΈ° ꡬνκΈ°
System.out.println(pq.size());
μ°μ μμ νλ₯Ό μ νμ©νμ...
κ°λ¨νκ² μκ°ν΄μ, μ§κΈ κ°μ λλλ μκ° <= λ€μ κ°μ μμ μκ°μ ꡬνλ λ‘μ§μ΄λΌλ κ²μ κΈ°μ΅νμ