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

Giá trị dãy con lớn nhất

Đề bài

Mô tả

Cho một dãy a gồm n số nguyên dương.

Xét một dãy con khác rỗng gồm k phần tử của a. Giá trị của dãy con đó được định nghĩa là

2i

lấy trên tất cả các số nguyên i0 sao cho có ít nhất max(1,k2) phần tử của dãy con có bit thứ i bằng 1 trong biểu diễn nhị phân (số x có bit thứ i bằng 1 nếu x/2imod2=1).

Dãy b được gọi là dãy con của a nếu b nhận được từ a bằng cách xoá đi một số (có thể bằng 0) phần tử.

Hãy tìm giá trị lớn nhất có thể đạt được khi chọn một dãy con khác rỗng của a.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n là số phần tử của dãy a.
  • 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 là giá trị lớn nhất tìm được.

Ràng buộc

  • 1n500
  • 1ai1018

Ví dụ

Input Output Giải thích
3
2 1 3
3 Chọn dãy con {2, 3} với k=2, khi đó max(1,k2)=1 nên mọi bit xuất hiện ở ít nhất một phần tử đều được tính: 2=1023=112 cho giá trị 20+21=3. Chọn {3} hoặc {2, 1, 3} cũng cho giá trị 3.
3
3 1 4
7 Chọn {3, 4}: 3=0112, 4=1002, giá trị là 20+21+22=7.
4
7 7 1 1
7 Chọn {7, 7} cho giá trị 7. Nếu chọn cả 4 phần tử thì k=4, mỗi bit phải xuất hiện ở ít nhất 2 phần tử: bit 0 có ở cả bốn số, bit 1 và bit 2 có ở hai số 7, nên giá trị vẫn là 7.

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