[Buổi 9][Tìm kiếm nhị phân & tìm đáp án][HW] Bài 1: Đếm mức giá không vượt ngân sách
Đếm mức giá không vượt ngân sách
Bối cảnh và bài toán
Một danh mục có n mức giá. Trong nhiều ngày khác nhau, người dùng đưa ra một ngân sách m và muốn biết có bao nhiêu lựa chọn có giá không vượt quá ngân sách đó.
Yêu cầu
Với mỗi ngân sách, đếm số giá trị a[i] <= m.
Input
- Dòng 1:
n. - Dòng 2:
nmức giá. - Dòng 3:
q. qdòng tiếp: ngân sáchm.
Output
In số lựa chọn hợp lệ cho từng truy vấn.
Ràng buộc
1 <= n, q <= 10^51 <= a[i] <= 10^50 <= m <= 10^9
Chấm điểm
| Subtask | Điểm | Điều kiện | Official tests |
|---|---|---|---|
| S1 | 30% | n, q ≤ 200 | 01–03 |
| S2 | 30% | n, q ≤ 10^5 | 04–06 |
| S3 | 40% | Không có ràng buộc bổ sung | 07–10 |
Ví dụ 1
Input
5
3 10 8 6 11
4
1
10
3
11
Output
0
4
1
5
Giải thích. Với ngân sách 10 có bốn mức giá 3,6,8,10; với 11 có cả năm.
Ví dụ 2
Input
5
1 1 1 1 1
2
0
1
Output
0
5
Giải thích. upper_bound phải đi qua toàn bộ các giá trị bằng m, không chỉ một phần tử.
Thông tin bài tập
| Thuộc tính | Giá trị |
|---|---|
| Mã bài | DSA-M03-B09-HW01 |
| Buổi | B09 |
| Loại bài | HOMEWORK |
| Mức độ khó | Dễ (Easy) |
| Thời gian làm bài khuyến nghị | 25 phút |
| Time limit | 2 giây |
| Memory limit | 256 MB |
| Tổng điểm | 100 |
| Chuẩn ngôn ngữ tham chiếu | C++11 trở lên |
Nguồn: Phỏng theo Codeforces 706B — Interesting Drink.
Comments