Câu chuyện
"2016? Al..right," người bán đồ chơi càu nhàu Hilbert. Anh mở mắt ra, lau nước sốt xà lách ra khỏi tai và ăn một ly cremechnitte khởi động buổi sáng. Ngày lễ mẫu mực. Anh ấy cần phải đi làm bây giờ, và hoàn thành kế toán năm.
Giáng sinh là khoảng thời gian rất năng suất trong năm, đặc biệt là doanh số của anh. Hilbert biết chính xác cách thức hoạt động của nó: Một người đi vào cửa hàng và mua món quà đầu tiên họ được cung cấp. Họ trả tiền cho nó và chạy đến một cửa hàng khác. Trong thực tế, những gì món quà thực sự không thực sự tạo ra sự khác biệt. Giá cả cũng không liên quan, miễn là nó không quá cao. Tất cả phụ thuộc vào thời gian còn lại cho đến Giáng sinh - thời gian càng ngắn, sự hối hận của khách hàng càng lớn, mức giá mà họ sẵn sàng trả càng lớn.
Tất cả những gì nó cần cho Hilbert là nhìn vào đồng hồ của anh ấy - và anh ấy biết ngay khách hàng của mình có thể chi bao nhiêu. Anh ta có thể dễ dàng tận dụng sự thật này: Anh ta chỉ tìm thấy món quà đắt nhất mà anh ta có thể bán cho một khách hàng nhất định, và cung cấp cho họ. Chỉ đến bây giờ anh mới nhận ra rằng anh đã quên sử dụng chiến lược xảo quyệt này vào năm ngoái. Điều đó sẽ thay đổi!
Tuy nhiên, Hilbert muốn biết doanh nghiệp của mình sẽ phát triển đến mức nào, nếu anh ta thực sự sử dụng kế hoạch lớn của mình. Anh quản lý để đưa ra một danh sách những người đến cửa hàng của anh, tuy nhiên anh không chắc mình có thể kiếm được bao nhiêu tiền từ họ.
Nhiệm vụ của bạn (TL; DR)
Đầu vào bao gồm một danh sách tăng dần về giá quà tặng có sẵn và danh sách ngân sách của khách hàng. Danh sách ngân sách theo thứ tự giống như khách hàng đã đến cửa hàng - với một điều kiện là mọi khách hàng đều sẵn sàng trả ít nhất là như trước đó, nghĩa là nó cũng tăng dần.
Đối với mỗi khách hàng, hãy tìm món quà đắt nhất mà họ sẵn sàng trả tiền và xuất ra giá của nó. Nếu không có quà tặng trong ngân sách có sẵn, đầu ra a 0.
Bạn nhận được -40%phần thưởng cho các ký tự, nếu độ phức tạp thời gian tiệm cận của thuật toán của bạn là O(n+m)(chứ không phải tầm thường O(n*m)) Đâu n, mlà độ dài của danh sách đầu vào.
Đây là mã golf , byte ngắn nhất sẽ thắng. Sơ hở tiêu chuẩn bị cấm.
Thí dụ
Đầu vào:
1 2 2 2 5 7 10 20
1 1 2 3 6 6 15 21 21 22
Đầu ra:
1 0 2 2 5 2 10 20 7 0
Nhiệm vụ này được lấy từ một cuộc thi lập trình địa phương, và được tôi dịch sang tiếng Anh. Đây là bài tập gốc: https://www.ksp.sk/ulohy/zadania/1131/