trang chủ / đề bài / dhbb23_cvabd_10_c

Trò chơi nhị phân

Đề bài

Mô tả

Trò chơi trên truyền hình đòi hỏi những người chơi phải có khả năng quan sát, trí nhớ tốt và tính toán giỏi. Trên bàn có các quân bài, mỗi quân bài ghi một số nguyên bằng 2k hoặc −2k với k=0,1,2,…,30; số quân bài cùng giá trị là đủ nhiều. Người chơi được xem trên màn hình trong một thời gian ngắn các số nguyên a1,a2,…,an, sau đó tự chọn cho mình các quân bài tùy ý, với số lượng tùy ý các quân bài cùng giá trị.

Trò chơi gồm n bước. Ở bước thứ i, số ai xuất hiện trên màn hình. Người chơi phải trích từ những quân bài của mình một nhóm nào đó các quân bài có tổng bằng ai và đặt chúng lên bàn để mọi người thấy. Số lượng quân bài đặt lên bàn có thể là 0 nếu ai=0. Người nào không chọn được các quân bài có tổng bằng ai sẽ bị loại khỏi cuộc chơi. Những người còn lại thu hồi các quân bài đã đặt về tập bài của mình và trò chơi chuyển sang bước tiếp theo. Sau n bước, người (hoặc những người) còn lại có tập bài với ít quân nhất sẽ chiến thắng.

Yêu cầu: Hãy xác định các quân bài cần chọn để bảo đảm bạn là người chiến thắng, tức là chọn một tập quân bài có ít quân nhất sao cho với mọi i, có thể lấy ra từ tập đó một nhóm quân bài (mỗi quân dùng không quá một lần trong một bước) có tổng bằng ai.

Dữ liệu vào

  • Dòng đầu tiên chứa một số nguyên n (1≤n≤106).
  • Dòng thứ hai chứa n số nguyên a1,a2,…,an (|ai|≤106).

Dữ liệu ra

  • Dòng đầu tiên chứa số nguyên k, số quân bài cần chọn.
  • Dòng thứ hai chứa k số nguyên, giá trị các quân bài được chọn (mỗi giá trị có dạng 2j hoặc −2j với 0≤j≤30), theo thứ tự bất kỳ. Nếu k=0 thì dòng này để trống.

Nếu có nhiều tập quân bài ít quân nhất, in ra một tập bất kỳ.

Ràng buộc

  • 1≤n≤106.
  • |ai|≤106.

Subtasks

  • Subtask 1 (30% số test, 30% số điểm): n≤102.
  • Subtask 2 (30% số test, 30% số điểm): n≤104.
  • Subtask 3 (40% số test, 40% số điểm): n≤106.

Ví dụ

Input Output Giải thích
4
2 -2 14 18
3
2 -2 16
2=2, −2=−2, 14=16+(−2), 18=16+2. Không có tập 2 quân nào làm được. Một đáp án đúng khác là 2,−4,16.
2
7 0
2
-1 8
Ví dụ thêm. 7=8+(−1); với a2=0 không cần đặt quân nào. Một quân bài không thể có giá trị 7, nên cần ít nhất 2 quâ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.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