MEX lớn nhất

Đề bài

Mô tả

Cho một mảng rỗng a=[] và một số nguyên dương x.

q truy vấn. Truy vấn thứ j gồm một số nguyên yj, nghĩa là thêm phần tử yj vào cuối mảng. Sau truy vấn thứ j, mảng là a=[y1,y2,,yj].

Sau mỗi truy vấn, bạn được phép thực hiện số lần tùy ý thao tác sau: chọn một chỉ số i bất kỳ rồi gán ai:=ai+x hoặc ai:=aix. Ràng buộc duy nhất là ai không được trở thành số âm.

Với mỗi j, hãy tìm giá trị MEX lớn nhất của mảng có thể đạt được sau khi thực hiện các thao tác. MEX của một mảng là số nguyên không âm nhỏ nhất không xuất hiện trong mảng.

Các thao tác không được giữ lại giữa các truy vấn: trước mỗi truy vấn, mảng luôn trở về đúng [y1,y2,,yj] với các giá trị ban đầu.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên qx.
  • q dòng tiếp theo, dòng thứ j chứa số nguyên yj.

Dữ liệu ra

In ra q dòng, dòng thứ j là giá trị MEX lớn nhất đạt được sau truy vấn thứ j.

Ràng buộc

  • 1q,x4·105
  • 0yj109

Ví dụ

Input Output Giải thích
7 3
0
1
2
2
0
0
10
1
2
3
3
4
4
7
Sau truy vấn 4, mảng là [0,1,2,2], không thao tác nào làm MEX vượt quá 3. Sau truy vấn 5, mảng là [0,1,2,2,0]: tăng phần tử cuối lên 0+3=3 được [0,1,2,2,3] nên MEX=4. Sau truy vấn 7, mảng [0,1,2,2,0,0,10] biến đổi được thành [0,1,2,5,3,6,4] nên MEX=7.
4 3
1
2
1
2
0
0
0
0
Mọi phần tử đều có số dư 1 hoặc 2 khi chia cho 3, cộng trừ 3 không đổi số dư nên không bao giờ tạo được giá trị 0. Do đó MEX luôn bằng 0.

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.400 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.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0