Truy vấn nhỏ nhất trên dãy tuần hoàn

Đề bài

Mô tả

Cho dãy b gồm n số nguyên dương và một số nguyên k. Dãy a được tạo ra bằng cách nối liên tiếp k bản sao của dãy b, do đó a có đúng n·k phần tử:

a=b1,b2,…,bn,b1,b2,…,bn,…,b1,b2,…,bn⏟k lần

Nói cách khác, ai=b((i−1)modn)+1 với mọi 1≤i≤n·k.

Bạn cần xử lý q truy vấn trên dãy a, mỗi truy vấn thuộc một trong hai loại:

  • 1 l r x — gán ai=x với mọi chỉ số i thỏa mãn l≤i≤r.
  • 2 l r — tìm giá trị nhỏ nhất trong các ai với l≤i≤r.

Các truy vấn phải được xử lý theo đúng thứ tự xuất hiện trong dữ liệu vào.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên n và k.
  • Dòng thứ hai chứa n số nguyên b1,b2,…,bn.
  • Dòng thứ ba chứa một số nguyên q.
  • q dòng tiếp theo, mỗi dòng mô tả một truy vấn theo một trong hai dạng 1 l r x hoặc 2 l r như trên.

Dữ liệu ra

Với mỗi truy vấn loại 2, in ra trên một dòng giá trị nhỏ nhất của đoạn tương ứng.

Ràng buộc

  • 1≤n≤105
  • 1≤k≤104
  • 1≤bi≤109
  • 1≤q≤105
  • 1≤l≤r≤n·k
  • 1≤x≤109

Lưu ý rằng n·k có thể lên tới 109, nên không thể dựng tường minh toàn bộ dãy a.

Ví dụ

Input Output Giải thích
3 1
1 2 3
3
2 1 3
1 1 2 4
2 1 3
1
3
k=1 nên a=[1,2,3]. Truy vấn đầu cho min(1,2,3)=1. Sau khi gán a1=a2=4 thì a=[4,4,3], nên giá trị nhỏ nhất trở thành 3.
3 2
1 2 3
5
2 4 4
1 4 4 5
2 4 4
1 1 6 1
2 6 6
1
5
1
a=[1,2,3,1,2,3]. Phần tử a4 là bản sao của b1=1 nên đáp án đầu là 1. Gán a4=5 rồi hỏi lại a4 cho 5. Cuối cùng gán toàn bộ dãy bằng 1 nên a6=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.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0