Bộ nhớ cho mảng

Đề bài

Mô tả

Bộ nhớ của máy tính được xem như một dãy các ô nhớ. Một số ô đã chứa dữ liệu, một số còn trống. Các ô trống liên tiếp nhau tạo thành một cụm bộ nhớ: mỗi cụm là một đoạn gồm các ô trống liền kề.

Bạn có đúng n cụm bộ nhớ, cụm thứ i gồm ai ô. Bạn cần cấp phát bộ nhớ cho m mảng. Mảng thứ j chiếm đúng 2bj ô nhớ liên tiếp.

Mỗi mảng phải nằm gọn trong một cụm (không được trải qua hai cụm khác nhau), và không ô nhớ nào được dùng cho hai mảng cùng lúc. Có thể không đủ bộ nhớ cho tất cả các mảng.

Hãy xác định số lượng mảng tối đa có thể được cấp phát vào các cụm bộ nhớ hiện có.

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 — kích thước các cụm.
  • Dòng thứ ba chứa m số nguyên b1,b2,,bm — mảng thứ j có kích thước 2bj.

Dữ liệu ra

In ra một số nguyên duy nhất — số mảng tối đa có thể cấp phát.

Ràng buộc

  • 1n,m106
  • 1ai109
  • 12bj109

Ví dụ

Input Output Giải thích
10 6
1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0
6 10 cụm kích thước 16 mảng kích thước 20=1. Chọn 6 cụm bất kỳ để chứa cả 6 mảng.
5 3
8 4 3 2 2
3 2 2
2 Các cụm có kích thước 8,4,3,2,2; các mảng có kích thước 8,4,4. Có thể đặt mảng kích thước 8 vào cụm 8 và một mảng kích thước 4 vào cụm 4, được 2 mảng. Không thể đặt cả 3.

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