Cân bằng số dư

Đề bài

Mô tả

Cho mảng n số nguyên a1,a2,,an và một số nguyên dương m. Biết rằng m là ước của n.

Trong một bước, bạn được chọn một vị trí i bất kỳ (1in) và tăng ai thêm 1.

Với mỗi số dư r (0rm1), gọi cr là số phần tử của mảng có số dư bằng r khi chia cho m. Nhiệm vụ của bạn là biến đổi mảng sao cho c0=c1==cm1=n/m, dùng ít bước nhất có thể.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nm.
  • Dòng thứ hai chứa n số nguyên a1,a2,,an.

Dữ liệu ra

  • Dòng đầu in một số nguyên: số bước ít nhất cần dùng.
  • Dòng thứ hai in một mảng hợp lệ bất kỳ đạt được từ mảng ban đầu với đúng số bước ít nhất đó. Các phần tử của mảng kết quả không được vượt quá 1018.

Ràng buộc

  • 1n2·105, 1mn, m là ước của n.
  • 0ai109.

Ví dụ

Input Output Giải thích
4 2
0 1 2 3
0
0 1 2 3
Số dư khi chia 2: 0,1,0,1, mỗi số dư đã có đúng 4/2=2 phần tử, không cần bước nào.
6 3
3 2 0 6 10 12
3
3 2 0 8 10 13
Số dư khi chia 3 ban đầu: 0,2,0,0,1,0, tức c0=4, c1=1, c2=2. Tăng 68 (2 bước, số dư 2) và 1213 (1 bước, số dư 1) để mỗi số dư có đúng 2 phần tử, tổng cộng 3 bước. Mọi mảng hợp lệ với đúng 3 bước đều được chấp nhậ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