[Buổi 12][Chia để trị][WS] Bài 1: Đếm cặp đảo thứ tự
Đếm cặp đảo thứ tự
Bối cảnh và bài toán
Một chuỗi bản ghi đáng lẽ tăng theo thứ tự ưu tiên. Một cặp (i,j) với i<j nhưng a[i]>a[j] biểu thị một lần đảo thứ tự. Với dữ liệu lớn, kiểm mọi cặp là quá chậm.
Yêu cầu
Đếm tổng số cặp đảo thứ tự.
Input
- Dòng 1:
n. - Dòng 2:
nsố nguyêna[i].
Output
In số inversion.
Ràng buộc
1 <= n <= 2 * 10^5|a[i]| <= 10^9
Chấm điểm
| Subtask | Điểm | Điều kiện | Official tests |
|---|---|---|---|
| S1 | 20% | n ≤ 2 * 10^3 | 01–04 |
| S2 | 30% | n ≤ 5 * 10^4 | 05–10 |
| S3 | 50% | Không có ràng buộc bổ sung | 11–20 |
Ví dụ 1
Input
3
3 1 2
Output
2
Giải thích. Các inversion là (3,1) và (3,2).
Ví dụ 2
Input
5
5 4 3 2 1
Output
10
Giải thích. Mọi cặp i<j đều là inversion, tổng C(5,2)=10.
Thông tin bài tập
| Thuộc tính | Giá trị |
|---|---|
| Mã bài | DSA-M04-B12-WS01 |
| Buổi | B12 |
| Loại bài | WORKSHOP |
| Mức độ khó | Trung bình (Medium) |
| Thời gian làm bài khuyến nghị | 50 phút |
| Time limit | 3 giây |
| Memory limit | 256 MB |
| Tổng điểm | 100 |
| Chuẩn ngôn ngữ tham chiếu | C++11 trở lên |
| Yêu cầu bổ sung | Decision Note |
Nguồn: Phỏng theo SPOJ — INVCNT (Code Wars 2010).
Tham khảo: https://www.spoj.com/problems/INVCNT/
Comments