trang chủ / đề bài / musketeer

Ba chàng lính ngự lâm

Đề bài

Mô tả

Có ba lính ngự lâm với sức mạnh lần lượt là a, b và c, và n tên tội phạm; tên tội phạm thứ i có sức mạnh ti.

Mỗi giờ, mỗi lính ngự lâm hoặc nghỉ, hoặc được phân công đánh đúng một tên tội phạm. Hai hay ba lính ngự lâm có thể cùng đánh một tên tội phạm, khi đó sức mạnh của họ được cộng lại. Một tên tội phạm bị hạ gục trong đúng một giờ nếu tổng sức mạnh của nhóm đánh hắn không nhỏ hơn sức mạnh của hắn; ngược lại thì không được phép phân công như vậy.

Nói cách khác, trong một giờ có thể hạ một tên tội phạm sức mạnh ti bằng một trong ba cách:

  • một lính ngự lâm sức mạnh x đánh một mình, cần ti≤x;
  • hai lính ngự lâm sức mạnh x và y cùng đánh, cần ti≤x+y; lính còn lại có thể nghỉ hoặc đi đánh một tên tội phạm khác;
  • cả ba lính ngự lâm cùng đánh, cần ti≤a+b+c.

Hãy tìm số giờ ít nhất để hạ gục toàn bộ n tên tội phạm, hoặc cho biết điều đó là không thể.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n, số tên tội phạm.
  • Dòng thứ hai chứa ba số nguyên a, b, c, sức mạnh của ba lính ngự lâm.
  • Dòng thứ ba chứa n số nguyên t1,t2,…,tn, sức mạnh của các tên tội phạm.

Dữ liệu ra

In ra một số nguyên duy nhất: số giờ ít nhất cần thiết để hạ gục tất cả tội phạm, hoặc −1 nếu không thể hạ gục hết.

Ràng buộc

  • 1≤n≤200000
  • 1≤a,b,c≤108
  • 1≤ti≤108

Ví dụ

Input Output Giải thích
5
10 20 30
1 1 1 1 50
2 Giờ thứ nhất: hai lính sức mạnh 20 và 30 cùng hạ tên có sức mạnh 50, đồng thời lính sức mạnh 10 hạ một tên sức mạnh 1. Giờ thứ hai: ba lính hạ ba tên sức mạnh 1 còn lại.
5
10 20 30
1 1 1 1 51
3 Tên sức mạnh 51 vượt quá 20+30 nên phải cả ba lính cùng đánh, và trong giờ đó không ai rảnh để đánh tên khác. Còn lại bốn tên sức mạnh 1, cần thêm hai giờ.
7
30 20 10
34 19 50 33 88 15 20
-1 Tên sức mạnh 88 lớn hơn tổng sức mạnh 30+20+10=60 của cả ba lính, nên không bao giờ hạ được.
6
10 5 10
10 9 5 25 20 5
3 Tên sức mạnh 25 cần cả ba lính; tên sức mạnh 20 cần hai lính sức mạnh 10, khi đó lính sức mạnh 5 hạ thêm một tên; giờ cuối hạ ba tên còn lại.

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