[Buổi 8][Sắp xếp, bộ so sánh & nén tọa độ][HW] Bài 2: Mã hóa tọa độ compact
Mã hóa tọa độ compact
Bối cảnh và bài toán
Một hệ thống lưu các tọa độ/giá trị rất lớn nhưng chỉ cần quan hệ thứ tự giữa chúng. Để tiết kiệm miền chỉ số, mỗi giá trị phân biệt được thay bằng một mã nguyên không âm nhỏ nhất có thể, đồng thời phải giữ nguyên quan hệ < và =.
Yêu cầu
Với mỗi giá trị ban đầu, in mã nén 0-based của nó: giá trị nhỏ nhất nhận 0, giá trị phân biệt tiếp theo nhận 1, ...
Input
- Dòng 1:
n. ndòng tiếp theo: mỗi dòng một giá trịa[i].
Output
In n dòng; dòng i là mã nén của a[i].
Ràng buộc
1 <= n <= 10^5|a[i]| <= 10^9
Chấm điểm
| Subtask | Điểm | Điều kiện | Official tests |
|---|---|---|---|
| S1 | 20% | n ≤ 10^3 | 01–04 |
| S2 | 30% | n ≤ 8*10^4 | 05–10 |
| S3 | 50% | Không có ràng buộc bổ sung | 11–20 |
Ví dụ 1
Input
5
3
3
1
6
1
Output
1
1
0
2
0
Giải thích. Các giá trị phân biệt tăng dần là [1,3,6], nên mã tương ứng là 0,1,2.
Ví dụ 2
Input
4
8
6
4
2
Output
3
2
1
0
Giải thích. Bốn giá trị đều khác nhau; thứ hạng tăng dần lần lượt 2,4,6,8.
Thông tin bài tập
| Thuộc tính | Giá trị |
|---|---|
| Mã bài | DSA-M03-B08-HW02 |
| Buổi | B08 |
| Loại bài | HOMEWORK |
| Mức độ khó | Trung bình (Medium) |
| Thời gian làm bài khuyến nghị | 35 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 AtCoder Beginner Contest 036 C — 座圧 (Coordinate Compression).
Tham khảo: https://atcoder.jp/contests/abc036/tasks/abc036_c
Comments