Giá treo áo

Đề bài

Mô tả

Phòng gửi đồ của một công ty có một giá treo áo gồm n móc xếp thành một hàng ngang, đánh số từ 1 đến n từ trái sang phải. Đầu ngày làm việc giá treo hoàn toàn trống.

Trong ngày, các nhân viên lần lượt đến và ra về. Khi một nhân viên đến, anh ta treo áo lên một móc trống theo quy tắc sau:

  1. Xét tất cả các đoạn móc trống liên tiếp (tối đại), chọn đoạn có độ dài lớn nhất.
  2. Nếu có nhiều đoạn cùng độ dài lớn nhất, chọn đoạn nằm bên phải nhất.
  3. Treo áo lên móc chính giữa đoạn đó. Nếu đoạn có số móc chẵn thì trong hai móc ở giữa, chọn móc bên phải.

Khi một nhân viên ra về, anh ta lấy đúng chiếc áo của mình, móc tương ứng trở lại trạng thái trống.

Thỉnh thoảng giám đốc muốn biết hiện có bao nhiêu chiếc áo đang được treo trên các móc từ i đến j. Hãy trả lời tất cả các truy vấn đó.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nq là số móc treo và số sự kiện.
  • q dòng tiếp theo mô tả các sự kiện theo thứ tự thời gian:
    • Dòng có dạng 0 i j là một truy vấn của giám đốc: đếm số áo đang treo trên các móc từ i đến j.
    • Ngược lại, dòng chứa một số nguyên dương là mã của một nhân viên. Lần xuất hiện thứ lẻ của một mã ứng với việc nhân viên đó đến, lần xuất hiện thứ chẵn ứng với việc ra về.

Các nhân viên có mã đôi một khác nhau. Dữ liệu đảm bảo mỗi khi có nhân viên đến thì luôn còn ít nhất một móc trống, và có ít nhất một truy vấn của giám đốc.

Dữ liệu ra

Với mỗi truy vấn của giám đốc, in ra trên một dòng số áo đang treo trên các móc từ i đến j.

Ràng buộc

  • 1n109
  • 1q105
  • 1ijn
  • Mã nhân viên là số nguyên dương không vượt quá 109

Ví dụ

Input Output Giải thích
9 11
1
2
0 5 8
1
1
3
0 3 8
9
0 6 9
6
0 1 9
2
3
2
5
Nhân viên 1 đến: đoạn trống duy nhất là [1,9], treo vào móc 5. Nhân viên 2 đến: hai đoạn [1,4][6,9] cùng dài 4, chọn đoạn phải hơn, treo vào móc 8. Truy vấn [5,8] cho 2. Nhân viên 1 ra về rồi lại đến: lúc này đoạn dài nhất là [1,7], treo vào móc 4. Nhân viên 3 đến: hai đoạn [1,3][5,7] cùng dài 3, chọn đoạn phải, treo vào móc 6; truy vấn [3,8] cho 3. Nhân viên 9 treo vào móc 2, truy vấn [6,9] cho 2. Nhân viên 6 treo vào móc 9, truy vấn [1,9] cho 5.
7 3
0 2 5
1
0 4 4
0
1
Ban đầu giá treo trống nên truy vấn đầu tiên cho 0. Nhân viên 1 đến, đoạn trống là [1,7]7 móc nên treo vào móc chính giữa là móc 4. Truy vấn [4,4] cho 1.

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