trang chủ / bài tập / booksqry

Kệ sách

Đề bài

Mô tả

Bạn có một kệ sách và muốn đặt các cuốn sách lên đó. Bạn cần xử lý q truy vấn thuộc ba loại:

  1. L id — đặt cuốn sách có chỉ số id vào bên trái của cuốn sách ngoài cùng bên trái hiện có.
  2. R id — đặt cuốn sách có chỉ số id vào bên phải của cuốn sách ngoài cùng bên phải hiện có.
  3. ? id — tính số cuốn sách tối thiểu cần lấy ra khỏi kệ (từ đầu bên trái hoặc đầu bên phải) sao cho cuốn sách có chỉ số id trở thành cuốn ngoài cùng bên trái hoặc ngoài cùng bên phải.

Cuốn sách đầu tiên được đặt lên kệ có thể ở vị trí bất kỳ (không quan trọng). Với mỗi truy vấn loại 3, đảm bảo cuốn sách id đã có trên kệ. Các cuốn sách không được đặt trùng lặp, nên id không lặp lại trong các truy vấn loại 1 và loại 2.

Lưu ý: sau khi trả lời một truy vấn loại 3, tất cả các cuốn sách vẫn nằm nguyên trên kệ và thứ tự tương đối giữa chúng không thay đổi (truy vấn loại 3 chỉ là câu hỏi giả định, không thực sự lấy sách ra).

Dữ liệu vào

  • Dòng đầu chứa số nguyên q là số truy vấn.
  • q dòng tiếp theo, mỗi dòng chứa một truy vấn theo đúng định dạng nêu trên.

Dữ liệu ra

Với mỗi truy vấn loại 3, in ra một dòng chứa đáp án tương ứng, theo thứ tự các truy vấn xuất hiện trong dữ liệu vào.

Ràng buộc

  • 1q2·105
  • 1id2·105
  • Dữ liệu luôn hợp lệ: với truy vấn loại 3, cuốn sách id chắc chắn đã có trên kệ; với truy vấn loại 1 và loại 2, cuốn sách id chưa từng được đặt trước đó.
  • Đảm bảo có ít nhất một truy vấn loại 3.

Ví dụ

Input Output Giải thích
8
L 1
R 2
R 3
? 2
L 4
? 1
L 5
? 1
1
1
2
Sau ba truy vấn đầu, kệ là [1, 2, 3]. Với ? 2, cuốn 2 ở giữa, cần lấy tối thiểu 1 cuốn (bỏ cuốn 3 từ bên phải hoặc cuốn 1 từ bên trái). Sau L 4, kệ là [4, 1, 2, 3], với ? 1 cần lấy 1 cuốn (bỏ cuốn 4). Sau L 5, kệ là [5, 4, 1, 2, 3], với ? 1 cần lấy 2 cuốn từ bên trái.
10
L 100
R 100000
R 123
L 101
? 123
L 10
R 115
? 100
R 110
? 115
0
2
1
Trước ? 123, kệ là [101, 100, 100000, 123], cuốn 123 đã ở ngoài cùng bên phải nên đáp án 0. Trước ? 100, kệ là [10, 101, 100, 100000, 123, 115], cuốn 100 cách bên trái 2 vị trí. Trước ? 115, kệ là [10, 101, 100, 100000, 123, 115, 110], cuốn 115 cách bên phải 1 vị trí.

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