MEX và Tăng

Đề bài

Mô tả

Cho mảng a gồm n số nguyên không âm a1,a2,,an.

Trong một thao tác, bạn được chọn một chỉ số j (1jn) và tăng giá trị của aj thêm 1. Có thể chọn cùng một chỉ số j nhiều lần.

Với mỗi i từ 0 đến n, hãy xác định xem có thể làm cho MEX của mảng bằng đúng i hay không. Nếu có thể, hãy tìm số thao tác nhỏ nhất để đạt được điều đó.

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. Ví dụ, MEX của mảng [3,1,0] bằng 2, còn MEX của mảng [3,3,1,4] bằng 0.

Dữ liệu vào

  • Dòng đầu chứa một số nguyên t (1t104) — số bộ dữ liệu.

Với mỗi bộ dữ liệu:

  • Dòng đầu chứa một số nguyên n (1n2·105) — độ dài mảng.
  • Dòng thứ hai chứa n số nguyên a1,a2,,an (0ain).

Tổng n trên tất cả các bộ dữ liệu không vượt quá 2·105.

Dữ liệu ra

Với mỗi bộ dữ liệu, in ra n+1 số nguyên trên cùng một dòng: số thứ i (đánh số từ 0) là số thao tác nhỏ nhất để MEX bằng i, hoặc 1 nếu không thể.

Ràng buộc

  • 1t104
  • 1n2·105
  • 0ain
  • Tổng n2·105

Ví dụ

Input Output Giải thích
5
3
0 1 3
7
0 1 2 3 4 3 2
4
3 0 0 0
7
4 6 2 3 5 0 5
5
4 0 1 0 4
1 1 0 -1
1 1 2 2 1 0 2 6
3 0 1 4 3
1 0 -1 -1 -1 -1 -1 -1
2 1 0 2 -1 -1
Với mảng [0,1,3]: để MEX=0 chỉ cần tăng phần tử 0 thêm 1; để MEX=1 tăng phần tử 1 thêm 1; MEX=2 đã đúng nên cần 0 thao tác; MEX=3 là không thể đạt được.
1
3
0 1 3
1 1 0 -1 Như giải thích bộ thứ nhất ở ví dụ trên.

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