Đếm nghịch thế

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 2.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Cho dãy ~A~ gồm ~N~ phần tử. Các phần tử đánh số từ 1 đến ~N~. Phần tử thứ ~i~ được ký hiệu là ~A(i)~.

Bạn cần thực hiện ~Q~ truy vấn. Với truy vấn thứ ~i~, bạn phải thay đổi giá trị của 1 số trong mảng ~A~ và phải đếm số cặp nghịch thế trong mảng.

1 cặp nghịch thế là 1 cặp ~(i, j)~ thỏa mãn 2 điều kiện sau:

  • ~i < j~
  • ~A(i) > A(j)~

Ví dụ:

~A = [4, 3, 3, 4]~

Có 2 cặp nghịch thế:

  • 1, 2 (đánh số từ 1)
  • 1, 3

Input

  • Dòng 1: ~N~, với ~1 \le N \le 250,000~.
  • Dòng 2: ~N~ số nguyên thể hiện mảng ~A~. ~(1 \le A(i) \le 50,000)~.
  • Dòng 3: ~Q~, với ~1 \le Q \le 10,000~.
  • ~Q~ dòng tiếp theo, mỗi dòng 2 số ~X~ và ~Y~, thể hiện truy vấn ~A(X) = Y~. ~(1 \le X \le N, 1 \le Y \le 50,000)~.

Output

Với mỗi truy vấn, in ra 1 số duy nhất là số nghịch thế sau khi áp dụng truy vấn đó.

Sample Input

10
2 6 6 4 7 6 3 5 9 1
7
8 8
5 1
5 6
10 5
7 1
10 10
4 6

Sample Output

17
18
16
13
14
8
6

Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 7
    pppssslc  đã bình luận lúc 25, Tháng 6, 2025, 17:14 chỉnh sửa

    My sol:

    Nhận xét:

    Sau mỗi truy vấn, số lượng cặp nghịch thế sẽ:

    • Giảm đi: số lượng ~y~(~y < X~) mà ~A(y) > A(X)~ và ~z~(~z > X~) mà ~A(z) < A(X)~.
    • Tăng lên: số lượng ~y~(~y < x~) mà ~A(y) > Y~ và ~z~(~z > X~) mà ~A(z) < Y~

    BIT + chia căn:

    • Ta chia mảng thành ~\sqrt{n}~ block, mỗi block dùng 1 cây BIT để quản lí số lượng phần tử theo các giá trị.
    • Có thể dùng thêm 1 cây BIT để quản lí các block giúp tối ưu hơn.

    Độ phức tạp: ~O(\sqrt{n} × log_2(5 × 10 ^ 4))~ hoặc ~O(log_2(\sqrt{n}) × log_2(5 × 10 ^ 4))~


  • 4
    TranThienPhuc2657  đã bình luận lúc 9, Tháng 6, 2025, 9:23

  • -6
    chunguyen2k8  đã bình luận lúc 2, Tháng 8, 2024, 12:26

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • -1
    nguyentrieuvy  đã bình luận lúc 16, Tháng 6, 2024, 1:36

    cao nhân nào gợi ý cách làm với ạ


  • -4
    hung01062003  đã bình luận lúc 28, Tháng 10, 2022, 15:32

    các cao nhân cho hỏi bài này ngoài cách chia căn thì còn cách nào khác k


    • -5
      lequangtrung123  đã bình luận lúc 14, Tháng 11, 2022, 5:03

      Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.