#354. QUERYRANK – Truy vấn thứ hạng

Bộ nhớ: 256 MiB Thời gian: 1000 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: Chưa có dữ liệu
Đưa lên bởi: Trùm CUỐI

Đề bài

Cho mảng A gồm N số nguyên không âm: a_1, a_2, …, a_N . Giả sử ta xếp thứ hạng cho các phần tử của A theo quy tắc sau:

  • Thứ hạng của mỗi phần tử bằng số phần tử lớn hơn nó cộng với 1
  • Các phần tử bằng nhau có cùng thứ hạng. Cho M truy vấn, mỗi truy vấn có một trong hai dạng:
  • R\ r với r là một số nguyên dương (truy vấn dạng 1 )
  • F\ r với r là một số nguyên dương (truy vấn dạng 2 )

Với truy vấn dạng 1 , bạn cần trả lời giá trị của phần tử xếp thứ r bằng bao nhiêu, nếu không có phần tử có hạng bằng r thì trả lời là -1 .

Với truy vấn dạng 2 , bạn cần trả lời số phần tử có cùng hạng là r , nếu không có phần tử nào thì ghi ra là -1 .

Dữ liệu vào:

  • Dòng đầu ghi hai số nguyên dương N M lần lượt là số phần tử của mảng và số truy vấn;
  • Dòng thứ hai ghi N số a_1, a_2, …, a_N , mỗi số cách nhau bởi một dấu cách;
  • M dòng tiếp theo ghi M truy vấn (một trọng hai dạng trên).

Dữ liệu ra:

  • Gồm M dòng, dòng thứ i ghi một số nguyên là câu trả lời cho truy vấn thứ i .

Ví dụ:

Dữ liệu vào:
6
2 3 5 3 5 5
4
R 1
F 1
R 2
F 2

Dữ liệu ra:

5
3
-1
0
Giải thích: Thứ hạng của các phần tử trong mảng A sẽ là: 6, 4, 1, 4, 1, 1 .

Giới hạn:

  • 1 ≤ N ≤ 10^6, 0 ≤ a_i ≤ 10^6, 1 ≤ M ≤ 10^6, 1 ≤ r ≤ N .