[Mo's] Trung Vị

Xem dưới dạng PDF

Gửi bài giải


Điểm: 140
Giới hạn thời gian: 2.0s
Giới hạn bộ nhớ: 256M
đầu vào: stdin
Đầu ra: stdout

Tác giả:
Kiểu bài tập

Tý có một bệnh viện theo dõi chỉ số sức khỏe của \(N\) bệnh nhân theo thứ tự khám bệnh. Mỗi bệnh nhân có một chỉ số a_i là số nguyên dương. Bác sĩ muốn thực hiện Q truy vấn: với đoạn bệnh nhân từ L đến R, hãy tìm chỉ số trung vị (phần tử đứng ở vị trí chính giữa sau khi sắp xếp tăng dần). Nếu độ dài đoạn là chẵn, lấy phần tử ở vị trí \(\lfloor (len+1)/2 \rfloor\).

Hãy viết chương trình giúp bác sĩ tìm trung vị nhanh chóng.

Định dạng đầu vào

  • Dòng đầu chứa hai số nguyên dương \(N\) và Q (\(1 \le N, Q \le 10^5\)).
  • Dòng thứ hai chứa \(N\) số nguyên dương \(a_1, a_2, \dots, a_N\) (\(1 \le a_i \le 10^9\)).
  • \(Q\) dòng tiếp theo, mỗi dòng chứa hai số nguyên \(L, R\) (\(1 \le L \le R \le N\)).

Định dạng đầu ra

  • In ra \(Q\) dòng, mỗi dòng là chỉ số trung vị của đoạn tương ứng.

Ví dụ

Input:

7 3
5 3 2 8 1 6 4
1 5
2 6
3 7

Output:

3
4
4

Giải thích:

  • \([1,5]\) sắp xếp: \(\{1,2,3,5,8\}\) — trung vị là \(3\). - [2,6]$ sắp xếp: \(\{1,2,3,6,8\}\) — trung vị là 3. (Sao chép ví dụ sai, tính lại: \(\{3, 2, 8, 1, 6\}\) sắp xếp \(\{1, 2, 3, 6, 8\}\) → \(3\)). - [3,7]$ sắp xếp: \(\{2,4,6,8,1\}\) sai. Đúng: \(\{2,8,1,6,4\}\) sắp xếp \(\{1,2,4,6,8\}\) → \(4\).

Subtask

Subtask Giới hạn Điểm
1 \(N, Q \le 10^3\) 20
2 \(N, Q \le 5 \cdot 10^4, a_i \le 10^3\) 30
3 \(N, Q \le 10^5\) 50

Nhận xét

Không có ý kiến tại thời điểm này.