trang chủ / đề bài / tb_tst_23_f

Xếp khối

Đề bài

Mô tả

Bob có một bộ đồ chơi gồm n khối gỗ, khối gỗ thứ i có độ cao hi.

Hôm nay, cậu quyết định lấy k khối gỗ trong bộ đồ chơi của mình để xây tháp. Một dãy k khối gỗ có độ cao v1,v2,…,vk sẽ xây được một tòa tháp có độ chênh vênh là min1≤i<j≤k|vi−vj|.

Lựa mãi không biết nên lấy những khối gỗ nào cho phù hợp. Vì vậy, thay vì chơi xếp hình, Bob chuyển hướng sang tính độ chênh vênh của mọi tòa tháp có thể xây dựng được.

Yêu cầu: Bạn hãy giúp Bob tính xem, trong tất cả các cách chọn k khối gỗ để xây tháp, tổng độ chênh vênh sẽ là bao nhiêu. Hai cách chọn được coi là khác nhau nếu tập các khối gỗ được chọn khác nhau (các khối gỗ khác nhau có thể có cùng độ cao), thứ tự các khối gỗ trong một cách chọn không quan trọng. Vì kết quả có thể rất lớn, in ra phần dư tổng tính được sau khi chia cho 998244353.

Dữ liệu vào

  • Dòng đầu tiên chứa hai số nguyên dương n,k là số khối gỗ trong bộ đồ chơi của Bob và số khối gỗ để xây tháp (2≤k≤n≤103).
  • Dòng thứ hai chứa n số nguyên h1,h2,…,hn, số thứ i là độ cao của khối gỗ thứ i (0≤hi≤105).

Dữ liệu ra

Một dòng duy nhất chứa kết quả của bài toán.

Ràng buộc

  • 2≤k≤n≤103.
  • 0≤hi≤105.

Subtasks

  • Subtask 1 (30% số điểm): n,k,hi≤100.
  • Subtask 2 (40% số điểm): n,k,hi≤600.
  • Subtask 3 (30% số điểm): Không có ràng buộc gì thêm.

Ví dụ

Input Output Giải thích
5 3
5 4 2 1 3
11 Có 10 cách chọn 3 khối. Cách chọn các khối cao 1,3,5 có độ chênh vênh 2, 9 cách còn lại có độ chênh vênh 1, tổng là 2+9·1=11.
6 4
2 6 8 10 1 5
19 Có 15 cách chọn 4 khối, ví dụ cách chọn các khối cao 1,5,8,10 có độ chênh vênh 2, cách chọn các khối cao 1,2,5,6 có độ chênh vênh 1.
4 3
1 2 2 3
2 Hai khối cao 2 là hai khối khác nhau. Các cách chọn độ cao {1,2,3} (có 2 cách, mỗi cách dùng một khối cao 2) có độ chênh vênh 1; hai cách {1,2,2} và {2,2,3} có độ chênh vênh 0. Tổng là 2.

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