Điểm xanh đỏ

Nộp bài
Time limit: 1.0 / Memory limit: 1G

Point: 100

Trên mặt phẳng toạ độ ~Oxy~ có ~N~ điểm màu đỏ và ~N~ điểm màu xanh. Điểm màu đỏ thứ ~i~ có toạ độ ~(a_i, b_i)~ và điểm màu xanh có toạ độ ~(c_i, d_i)~. Tất cả các điểm đều có hoành độ và tung độ phân biệt.

Một điểm đỏ và một điểm xanh có thể tạo thành một cặp thân thiện khi và chỉ khi hoành độ của điểm đỏ nhỏ hơn hoành độ của điểm xanh, và tung độ của điểm đỏ nhỏ hơn tung độ của điểm xanh. Nói cách khác, điểm đỏ thứ ~i~ và điểm xanh thứ ~j~ có thể tạo thành một cặp thân thiện khi và chỉ khi ~a_i < c_j~ và ~b_i < d_j~.

Hãy cho biết có thể tạo tối đa bao nhiêu cặp thân thiện, sao cho mỗi điểm chỉ thuộc tối đa một cặp thân thiện.

Input

  • Dòng đầu tiên gồm số nguyên ~N~ (~1 \leq N \leq 10^5~) - số điểm đỏ cũng như số điểm xanh.
  • ~N~ dòng tiếp theo, dòng thứ ~i~ gồm hai số nguyên ~a_i~ và ~b_i~ (~10^9 \leq a_i, b_i \leq 10^9~) - toạ độ của điểm đỏ thứ ~i~.
  • ~N~ dòng tiếp theo, dòng thứ ~i~ gồm hai số nguyên ~c_i~ và ~d_i~ (~10^9 \leq c_i, d_i \leq 10^9~) - toạ độ của điểm xanh thứ ~i~.

Dữ liệu vào đảm bảo các số nguyên ~a_1, a_2, \ldots, a_N, c_1, c_2, \ldots, c_N~ khác nhau từng dôi một, và các số nguyên ~b_1, b_2, \ldots, b_N, d_1, d_2, \ldots, d_N~ khác nhau từng dôi một.

Output

  • In ra một số nguyên duy nhất là số cặp thân thiện tối đa có thể tạo được

Subtasks

  • ~25\%~ số test có ~N \leq 8~.
  • ~25\%~ số test có ~N \leq 16~.
  • ~25\%~ số test có ~N \leq 1000~.
  • ~25\%~ số test có ~N \leq 10^5~.

Sample Test 1

Input:

3
-2 -2
-3 1
1 3
2 0
-1 4
3 -1

Output:

2

Sample Test 2

Input:

3
-3 3
-2 2
-1 1
1 -1
2 -2
3 -3

Output:

0

Điểm chung

Nộp bài
Time limit: 1.0 / Memory limit: 1G

Point: 100

Trên trục số ~Ox~, cho ~𝑁~ đoạn thẳng, mỗi đoạn thẳng được xác định bởi hai điểm đầu và cuối là hai số nguyên. Một điểm ~𝑀~ được gọi là nằm trong đoạn thẳng ~𝐴𝐵~ nếu ~𝐴 ≤ 𝑀 ≤ 𝐵~.

Yêu cầu: Đếm xem có bao nhiêu điểm có toạ độ nguyên nằm trong đúng ~𝐾~ đoạn thẳng.

Dữ liệu nhập vào từ file văn bản DC.INP:

  • Dòng đầu tiên gồm hai số nguyên ~𝑁~ và ~𝐾~ ~(1 ≤ 𝐾 ≤ 𝑁 ≤ 10^5);~
  • ~𝑁~ dòng sau, mỗi dòng gồm hai số nguyên ~𝑎, 𝑏~ mô tả hai điểm đầu và cuối của đoạn thẳng ~(1 ≤ 𝑎 ≤ 𝑏 ≤ 10^{18})~.

Kết quả ghi ra file văn bản DC.OUT:

Một số nguyên duy nhất là số lượng điểm có toạ độ nguyên nằm trong đúng ~𝐾~ đoạn thẳng.

Ràng buộc

  • Có ~50\%~ số test ứng với ~50\%~ số điểm của bài thoả mãn: ~𝑎, 𝑏 ≤ 10^3;~
  • ~30\%~ số test khác ứng với ~30\%~ số điểm của bài thoả mãn: ~𝐾 = 𝑁;~
  • ~20\%~ số test còn lại ứng với ~20\%~ số điểm của bài không có ràng buộc gì thêm.

Ví dụ

Input
3 2
1 5
2 8
3 7
Output
3

Giải thích: Toạ độ của ~3~ điểm nằm trong đúng ~2~ đoạn thẳng là: ~2, 6, 7~.

  • Điểm có toạ độ ~2~ nằm trong ~2~ đoạn thẳng: đầu tiên và thứ hai.
  • Điểm có toạ độ ~6, 7~ nằm trong ~2~ đoạn thẳng: thứ hai và thứ ba.
Input
3 1
1 5
2 8
3 7
Output
2   

Giải thích: Toạ độ của ~2~ điểm nằm trong đúng ~1~ đoạn thẳng là: ~1, 8~.

  • Điểm có toạ độ ~1~ chỉ nằm trong đoạn thẳng đầu tiên.
  • Điểm có toạ độ ~8~ chỉ nằm trong đoạn thẳng thứ ba.
Input
3 3
1 5
2 8
3 7
Output
3

Giải thích: Toạ độ của ~3~ điểm nằm trong cả ~3~ đoạn thẳng là: ~3,4,5~.


Time limit: 1.0 / Memory limit: 256M

Point: 100

Cho dãy số ~A~ gồm ~3N~ phần tử.

Bạn cần xóa đúng ~N~ phần tử khỏi ~A~. Sau khi xóa, các phần tử còn lại giữ nguyên thứ tự ban đầu và tạo thành một dãy mới ~A'~ gồm ~2N~ phần tử.

Điểm số của dãy ~A'~ được tính bằng:

~(\text{tổng } N \text{ phần tử đầu tiên của } A') - (\text{tổng } N \text{ phần tử cuối cùng của } A')~

Hãy tìm điểm số lớn nhất có thể.

Input

  • Dòng đầu tiên chứa số nguyên ~N~.
  • Dòng thứ hai chứa ~3N~ số nguyên ~A_1, A_2, \ldots, A_{3N}~.

Output

  • In ra một số nguyên duy nhất là điểm số lớn nhất có thể.

Ràng buộc

  • ~1 \le N \le 10^5~
  • ~1 \le A_i \le 10^9~

Subtask

Subtask Ràng buộc thêm Điểm
~1~ ~N \le 7~ ~30~
~2~ ~N \le 1000~ ~30~
~3~ Không có ràng buộc gì thêm ~40~

Sample Input 1

2
6 2 7 4 3 8

Sample Output 1

6

Sample Input 2

1
4 5 3

Sample Output 2

2

Giải thích

Ở ví dụ 1, ta có thể xóa phần tử thứ ~2~ và thứ ~6~ để thu được:

~A' = [6, 7, 4, 3]~

Điểm số là:

~(6 + 7) - (4 + 3) = 6~

Ở ví dụ 2, ta có thể xóa phần tử thứ ~1~ để thu được:

~A' = [5, 3]~

Điểm số là:

~5 - 3 = 2~


Phòng Thi

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 100

Có một phòng thi gồm ~n~ ghế trên một hàng ngang, được đánh số từ ~0~ đến ~n - 1~.

Khi một học sinh đi vào phòng, học sinh đó sẽ chọn ghế sao cho khoảng cách tới học sinh gần nhất đang ngồi là lớn nhất có thể.

Nếu có nhiều ghế thỏa mãn, học sinh chọn ghế có chỉ số nhỏ nhất.

Nếu phòng đang trống, học sinh sẽ ngồi ở ghế ~0~.

Có ~q~ thao tác thuộc một trong hai loại:

  • 1: một học sinh đi vào phòng. Hãy in ra ghế mà học sinh đó chọn.
  • 2 p: học sinh đang ngồi ở ghế ~p~ rời khỏi phòng.

Với mỗi thao tác loại 1, hãy in ra vị trí ghế được chọn.

Input

  • Dòng đầu tiên chứa hai số nguyên ~n~ và ~q~.
  • ~q~ dòng tiếp theo, mỗi dòng mô tả một thao tác:
    • 1
    • hoặc 2 p

Output

  • Với mỗi thao tác loại 1, in ra một dòng là chỉ số ghế được chọn.

Ràng buộc

  • ~1 \le n \le 10^9~
  • ~1 \le q \le 10^4~
  • Với thao tác 2 p, đảm bảo đang có học sinh ngồi ở ghế ~p~.
  • Với thao tác 1, đảm bảo phòng chưa đầy.

Subtask

Subtask Ràng buộc thêm Điểm
~1~ ~n, q \le 100~ ~30~
~2~ Không có thao tác rời khỏi phòng ~30~
~3~ Không có ràng buộc gì thêm ~40~

Sample Input

10 6
1
1
1
1
2 4
1

Sample Output

0
9
4
2
5

Giải thích

  • Học sinh đầu tiên ngồi ghế ~0~.
  • Học sinh thứ hai ngồi ghế ~9~.
  • Học sinh thứ ba ngồi ghế ~4~.
  • Học sinh thứ tư ngồi ghế ~2~.
  • Học sinh ở ghế ~4~ rời đi.
  • Học sinh tiếp theo ngồi ghế ~5~.

Tập đoạn tốt

Nộp bài
Time limit: 1.0 / Memory limit: 1G

Point: 100


Chia tập

Nộp bài
Time limit: 3.5 / Memory limit: 1G

Point: 100

Cho ~N~ đoạn thẳng song song với trục ~Ox~, các đoạn thẳng được đánh số từ ~1~ đến ~N~. Đoạn thẳng thứ ~i~ ~(1\le i\le N)~ được xác định bởi điểm đầu và điểm cuối lần lượt là hai số nguyên dương ~l_i, r_i~. Hai đoạn thẳng ~i, j~ ~(1\le i, j\le N)~ được gọi là giao nhau khi: ~(r_i-l_i)+(r_j-l_j)\ge \max(r_i, r_j) - \min(l_i, l_j)~.

Ví dụ: như hình vẽ dưới, đoạn thẳng thứ ~1~ và ~4~, đoạn thẳng thứ ~2~ và ~3~, ... được gọi là giao nhau; đoạn thẳng thứ ~2~ và ~5~, đoạn thẳng thứ ~1~ và ~3~, ... không được gọi là giao nhau.

Hình minh hoạ ví dụ

Yêu cầu: Hãy chọn ra hai tập đoạn thẳng ~S_1~ (có số lượng phần tử là ~x~) và ~S_2~ (có số lượng phần tử là ~y~) thoả mãn:

  • Mỗi đoạn thẳng trong ~N~ đoạn thẳng thuộc tối đa một tập;
  • Các đoạn thẳng trong cùng một tập đôi một giao nhau;
  • ~x\ge y~ và ~y~ lớn nhất.

Dữ liệu vào từ tệp văn bản CT.INP:

  • Dòng đầu chứa số nguyên dương ~N~ ~(2\le N\le 5 \times 10^5)~ là số lượng đoạn thẳng;
  • ~N~ dòng tiếp theo, dòng thứ ~i~ ~(1\le i\le N)~ chứa hai số ~l_i, r_i~ ~(1\le l_i\le r_i\le 10^9)~ mô tả điểm đầu và điểm cuối của đoạn thẳng thứ ~i~.

Dữ liệu ghi ra tệp văn bản CT.OUT:

Ghi ra giá trị ~y~ thoả mãn.

Ví dụ

Input
5
4 7
1 8
8 10
2 6
11 12
Output
2
Giải thích

Có thể có nhiều cách lựa chọn ra hai tập.

Nếu chọn tập ~S_1~ gồm ~3~ đoạn thẳng thứ ~1, 2~ và ~4~; tập ~S_2~ gồm ~1~ đoạn thẳng thứ ~3~ hoặc ~5~; cách này có ~x=3, y=1~.

Nếu chọn tập ~S_1~ gồm ~2~ đoạn thẳng thứ ~1~ và ~4~; tập ~S_2~ gồm ~2~ đoạn thẳng thứ ~2~ và ~3~; cách này có ~x=2, y=2~.

Ràng buộc

  • Có ~25\%~ số test ứng với ~25\%~ số điểm thoả mãn: ~N\le 500~;
  • ~25\%~ số test khác ứng với ~25\%~ số điểm thoả mãn: ~N\le 5000~;
  • ~25\%~ số test khác ứng với ~25\%~ số điểm thoả mãn: ~N\le 10^5~;
  • ~25\%~ số test còn lại ứng với ~25\%~ số điểm không có ràng buộc gì thêm.