canuc80k0502·3/50

Đếm Không Vượt Ngưỡng

Nộp bài trên LQDOJ

Bài 05 · Binary Search

Cho mảng số nguyên gồm phần tử và mảng truy vấn gồm phần tử. Với từng , hãy đếm số chỉ số sao cho .

Các truy vấn độc lập và phải được trả lời theo đúng thứ tự trong mảng .

Input

  • Dòng đầu chứa hai số nguyên và .
  • Dòng thứ hai chứa số nguyên .
  • Dòng thứ ba chứa số nguyên .

Output

  • In số nguyên trên một dòng; số thứ là lượng phần tử của không lớn hơn .

Constraints

  • .
  • .

Scoring

  • Subtask ( điểm): .
  • Subtask ( điểm): không có giới hạn bổ sung.

Example

Test 1

Input

6 4
-2 5 5 0 9 1
-3 0 5 10

Output

0 2 5 6

Giải thích: Ngưỡng tính cả hai phần tử bằng , nên có năm phần tử của không vượt ngưỡng này.

Lời giải tóm tắt
  • Ý tưởng: Sắp xếp a. Với mỗi ngưỡng x, upper_bound(a, x) trả vị trí đầu tiên có giá trị lớn hơn x; độ dài tiền tố đứng trước vị trí đó chính là số phần tử ≤ x.
  • Ý tưởng: Tính đúng đắn: do a đã tăng dần, mọi phần tử trước biên thỏa điều kiện và mọi phần tử từ biên trở đi không thỏa; không phần tử nào bị bỏ sót hoặc đếm thừa.
  • Ý tưởng: Độ phức tạp là O(n log n + m log n) thời gian và O(n) bộ nhớ.