Cấu trúc dữ liệu set trong C++ - Nâng cao Hưng

Xóa phần tử nhỏ nhất (multiset)

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

Point: 1

Cho một dãy số gồm n phần tử.

Hãy liên tục xóa phần tử nhỏ nhất ra khỏi dãy cho đến khi dãy rỗng.

Sau mỗi lần xóa, in ra phần tử bị xóa.


Input:
5
4 2 9 2 7
Output:
2 2 4 7 9

Tìm phần tử lớn nhất nhỏ hơn hoặc bằng X (multiset)

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

Point: 1

Cho một multiset và số nguyên x.

Tìm phần tử lớn nhất trong multiset nhỏ hơn hoặc bằng x.

Nếu không có phần tử nào thỏa mãn, in -1.


Input:
5 6
1 3 8 10 12
Output:
3

Đếm số lần xuất hiện (multiset)

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

Point: 1

Cho n số, hãy đếm số lần xuất hiện của từng phần tử theo thứ tự tăng dần.


Input:
6
4 4 1 3 4 3
Output:
1 1
3 2
4 3

Xóa một phần tử cụ thể (multiset)

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

Point: 1

Cho n số, sau đó nhập q truy vấn, mỗi truy vấn xóa 1 số x (nếu có).

Sau khi thực hiện xong tất cả, in ra các phần tử còn lại theo thứ tự tăng.


Input:
5
2 3 3 4 5
3
3
5
9
Output:
2 3 4

Ghép hai multiset

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

Point: 1

Cho hai multiset, in ra multiset chứa hợp của hai tập (bao gồm cả trùng lặp).


Input:
3
1 2 3
4
2 2 3 4
Output:
1 2 2 2 3 3 4

Phần giao của hai multiset

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

Point: 1

Cho hai multiset, in ra phần giao (các phần tử có mặt ở cả hai, tính theo số lần nhỏ hơn).


Input:
3
1 2 2
4
2 2 3 3
Output:
2 2

Mô phỏng hàng đợi ưu tiên (multiset)

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

Point: 1

Có q thao tác:

1 → thêm x

2 → in ra phần tử nhỏ nhất rồi xóa nó

Nếu hàng rỗng mà thao tác 2 xuất hiện → in "Empty".


Input:
5
1 10
1 5
1 7
2
2
Output:
5
7

Khoảng cách nhỏ nhất giữa 2 phần tử liền kề (multiset)

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

Point: 1

Cho dãy n số, tìm giá trị |ai - aj| nhỏ nhất với mọi cặp liền kề trong thứ tự sắp xếp.


Input:
5
4 1 8 7 2
Output:
1

Quản lý tòa nhà (multiset)

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

Point: 1

Bạn có n tầng của một tòa nhà (đánh số từ 1 đến n), ban đầu tất cả đều trống. Có m khách hàng, khách hàng thứ i muốn thuê tầng cao nhất có số tầng ≤ xi. Nếu không còn tầng nào thỏa mãn (tầng > xi hoặc đã cho thuê hết), in ra -1. Nếu tìm được, in số tầng đó và đánh dấu là đã cho thuê (không dùng lại nữa).


Input:

Dòng đầu: hai số nguyên n, m — số tầng và số yêu cầu thuê.

Dòng 2: n số nguyên — số tầng có sẵn (có thể là số tầng không liên tiếp).

Dòng 3: m số nguyên x1, x2, ..., x_m — yêu cầu của từng khách.

Output: In m số nguyên — kết quả thuê tầng tương ứng với mỗi yêu cầu.


Input:
3 5
2 3 4
3 4 2 2 1
Output:
3 4 2 -1 -1

Ghép cặp tối ưu (multiset)

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

Point: 1

Có hai mảng A và B gồm n các số nguyên (1 <= n <= 10^4; -10^6 <= A[i], B[i] <= 10^6).

Hãy ghép từng phần tử A[i] với B[j] sao cho hiệu |A[i] - B[j]| nhỏ nhất.

In ra tổng hiệu tối thiểu.


Input:
3
1 4 6
2 7 5
Output:
3

Tìm phần tử có tần suất cao nhất (unordered_set)

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

Point: 1

Cho dãy n số nguyên, hãy in ra phần tử có tần suất xuất hiện lớn nhất.

Nếu có nhiều phần tử cùng tần suất, in ra phần tử nhỏ nhất trong số đó.


Input:

n

a1 a2 ... an

Output: Một số nguyên duy nhất — phần tử có tần suất cao nhất.


Constraints:

1 ≤ n ≤ 2×10^5

1 ≤ ai ≤ 10^9


Sample:

Input:
6
1 3 2 3 1 3
Output:
3

Tìm số xuất hiện đúng k lần (unordered_set)

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

Point: 1

Cho dãy gồm n số.

In ra tất cả các số xuất hiện đúng k lần, theo thứ tự tăng dần.


Input:

n k

a1 a2 ... an

Output:

Danh sách các số xuất hiện đúng k lần (tăng dần), hoặc in "NONE" nếu không có.


Constraints:

1 ≤ n ≤ 2×10^5

1 ≤ ai ≤ 10^9

1 ≤ k ≤ n


Sample:

Input:
6 2
1 2 2 3 3 3
Output:
2