Bài toán dọn rác

Đề bài

Mô tả

Trên trục số nguyên có một tập hợp các đống rác, đống thứ i nằm tại tọa độ pi. Tất cả các tọa độ đều đôi một khác nhau.

Một thao tác dồn toàn bộ được định nghĩa như sau: ta cần gom tất cả các đống về không quá hai tọa độ khác nhau. Để làm điều đó, ta thực hiện một số (có thể bằng 0) bước. Mỗi bước, ta chọn một tọa độ xchuyển toàn bộ các đống đang ở tọa độ x sang x+1 hoặc sang x1 (không thể chỉ chuyển một phần).

q truy vấn, mỗi truy vấn thuộc một trong hai loại:

  • 0 x — xóa đống rác ở tọa độ x (đảm bảo đang có đống tại x).
  • 1 x — thêm một đống rác mới ở tọa độ x (đảm bảo chưa có đống tại x).

Tại mọi thời điểm tập hợp có thể rỗng. Lưu ý rằng thao tác dồn toàn bộ chỉ dùng để tính toán — nó không thực sự được thực hiện và không làm thay đổi tập hợp các đống.

Hãy in ra số bước ít nhất cần dùng để dồn toàn bộ trước khi xử lý truy vấn đầu tiên, và sau mỗi truy vấn được áp dụng theo thứ tự.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nq (1n,q105).
  • Dòng thứ hai chứa n số nguyên đôi một khác nhau p1,p2,,pn (1pi109).
  • q dòng tiếp theo, mỗi dòng chứa hai số nguyên tixi (0ti1, 1xi109) mô tả truy vấn.

Dữ liệu ra

In ra q+1 số: số bước tối thiểu trước truy vấn đầu tiên và sau mỗi truy vấn.

Ràng buộc

  • 1n,q105
  • 1pi,xi109

Ví dụ

Input Output Giải thích
5 6
1 2 6 8 10
1 4
1 9
0 6
0 10
1 100
1 50
5
7
7
5
4
8
49
Ban đầu tập là {1,2,6,8,10}: chuyển 12 (1 bước), 108 (2 bước), 68 (2 bước), tổng 5. Sau khi thêm 100, tập rời rạc thành hai cụm xa nhau nên cần 8. Sau khi thêm 50, một cụm trải dài từ 1 đến 50 nên phải dồn 49 bước.
5 8
5 1 2 4 3
0 1
0 2
0 3
0 4
0 5
1 1000000000
1 1
1 500000000
3
2
1
0
0
0
0
0
499999999
Tập ban đầu {1,2,3,4,5}: cần 3 bước (gom thành hai cụm). Sau mỗi lần xóa, tập co lại; khi còn ≤ 2 phần tử đáp án là 0. Cuối cùng tập là {1,500000000,109}, gom cụm hai phần tử ở giữa và phải 499999999 bước.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0