Trao đổi thẻ số

Đề bài

Mô tả

Eugeny có n tấm thẻ, tấm thứ i ghi số nguyên dương ai. Nikolay có m tấm thẻ ghi các số 1,2,,m, mỗi số xuất hiện trên đúng một tấm thẻ.

Một lần trao đổi là việc Eugeny đưa cho Nikolay một tấm thẻ của mình và lấy về một tấm thẻ bất kỳ mà Nikolay đang giữ.

Eugeny muốn bộ thẻ của mình sau khi trao đổi thoả mãn đồng thời hai điều kiện:

  • Các số ghi trên n tấm thẻ đôi một phân biệt.
  • Số lượng số chẵn bằng số lượng số lẻ, tức là mỗi loại đúng n/2 số.

Lưu ý rằng các số ai ban đầu có thể lớn hơn m, và mọi tấm thẻ lấy từ Nikolay đều mang giá trị trong đoạn [1,m].

Hãy tìm số lần trao đổi ít nhất và chỉ ra một bộ thẻ cuối cùng tương ứng.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nm là số thẻ của Eugeny và số thẻ của Nikolay.
  • Dòng thứ hai chứa n số nguyên dương a1,a2,,an.

Dữ liệu ra

Nếu không tồn tại cách trao đổi thoả mãn, in ra 1.

Ngược lại:

  • Dòng đầu in số lần trao đổi ít nhất.
  • Dòng thứ hai in n số nguyên là bộ thẻ của Eugeny sau khi trao đổi, theo đúng thứ tự vị trí ban đầu. Nếu thẻ thứ i không bị đổi thì số thứ i phải bằng ai, ngược lại số thứ i là giá trị của tấm thẻ nhận về.

Nếu có nhiều đáp án, in ra một đáp án bất kỳ.

Ràng buộc

  • 2n2·105n chẵn
  • 1m109
  • 1ai109

Ví dụ

Input Output Giải thích
6 2
5 6 7 9 4 5
1
5 6 7 9 4 2
Số 5 xuất hiện hai lần nên tấm thẻ cuối buộc phải đổi. Đổi nó lấy thẻ số 2, thu được ba số lẻ 5,7,9 và ba số chẵn 6,4,2, tất cả đều phân biệt.
8 6
7 7 7 7 8 8 8 8
6
7 1 3 5 8 2 4 6
Chỉ giữ lại được một thẻ 7 và một thẻ 8, sáu thẻ còn lại phải đổi. Nikolay có các thẻ 1..6, lấy 1,3,5 để đủ bốn số lẻ và 2,4,6 để đủ bốn số chẵn.
4 1
4 2 1 10
-1 Cần đúng hai số lẻ nhưng Eugeny chỉ có một số lẻ là 1, còn Nikolay chỉ có duy nhất thẻ số 1 đã nằm sẵn trong bộ. Không thể bổ sung thêm số lẻ nào.

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