trang chủ / bài tập / maxminseg

Cực đại của cực tiểu

Đề bài

Mô tả

Cho một dãy số nguyên a1,a2,,an và một số nguyên k.

Bạn phải chia dãy thành đúng k đoạn con liên tiếp, mỗi đoạn không rỗng. Nói cách khác, chọn các đoạn [l1,r1],[l2,r2],,[lk,rk] thoả mãn l1=1, rk=nli=ri1+1 với mọi i>1.

Với mỗi đoạn, tính giá trị nhỏ nhất của các phần tử trong đoạn đó. Sau đó lấy giá trị lớn nhất trong k giá trị nhỏ nhất vừa tính.

Hãy tìm giá trị lớn nhất có thể đạt được.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nk: kích thước dãy và số đoạn phải chia.
  • Dòng thứ hai chứa n số nguyên a1,a2,,an.

Dữ liệu ra

In ra một số nguyên duy nhất: giá trị lớn nhất có thể đạt được.

Ràng buộc

  • 1kn105
  • 109ai109

Ví dụ

Input Output Giải thích
5 2
1 2 3 4 5
5 Chia thành [1,4][5,5], được hai dãy (1,2,3,4)(5). Hai giá trị nhỏ nhất là 15, kết quả là max(1,5)=5.
5 1
-4 -5 -3 -2 -1
-5 Chỉ có một cách chia là lấy cả dãy làm một đoạn, nên kết quả bằng giá trị nhỏ nhất của cả dãy là 5.
3 2
1 5 3
3 Phần tử lớn nhất là 5 nhưng nằm ở giữa, với k=2 nó luôn bị ghép chung với một trong hai đầu. Cách tốt nhất là [1,2][3,3], cho max(1,3)=3.
7 3
1 1 1 10 1 1 1
10 Chia thành [1,3], [4,4][5,7], tách riêng được phần tử 10, kết quả là max(1,10,1)=10.

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