Bạn đi qua n trạm theo thứ tự từ 1 đến n. Trạm i có mức tải si. Ban đầu, hệ số chi phí của bạn là x.
Tại mỗi trạm i<n, bạn có thể bỏ qua trạm đó hoặc xử lý nó. Trạm n bắt buộc phải được xử lý. Nếu hệ số hiện tại là c, việc xử lý trạm có mức tải s tốn c⋅s. Sau khi xử lý trạm i, hệ số hiện tại trở thành fi và được dùng cho lần xử lý tiếp theo.
Hãy tìm tổng chi phí nhỏ nhất để xử lý trạm n.
Input
Dòng đầu chứa hai số nguyên n và x.
Dòng thứ hai chứa s1,…,sn.
Dòng thứ ba chứa f1,…,fn.
Output
In tổng chi phí nhỏ nhất để xử lý trạm n.
Constraints
1≤n≤2⋅105.
1≤x,si,fi≤106.
s1≤s2≤⋯≤sn.
x≥f1≥f2≥⋯≥fn.
Đáp án nằm trong miền số nguyên có dấu 64-bit.
Scoring
Subtask 1 (50% số điểm): n≤60.
Subtask 2 (50% số điểm): Không có giới hạn bổ sung.
Example
Test 1
Input
3 5
1 3 6
4 2 1
Output
27
Giải thích: Bỏ qua trạm 1, xử lý trạm 2 bằng hệ số 5 nên tốn 15, rồi nhận hệ số 2. Xử lý trạm 3 tốn thêm 2⋅6=12, do đó tổng chi phí là 27.
Lời giải tóm tắt
Phân tích: Giả sử trạm gần nhất đã được xử lý trước trạm i là j<i. Khi đó tổng chi phí bằng dp[j]+f_j·s_i. Ta cũng có thể bỏ qua mọi trạm trước i và dùng hệ số ban đầu, với chi phí x·s_i.
Phân tích: Vì thế:
Phân tích:dp[i] = min(x·s_i, min_{j<i}(dp[j]+f_j·s_i)).
Thuật toán: Xem hệ số ban đầu như đường thẳng y=x·t. Sau khi tính dp[i] bằng giá trị nhỏ nhất tại t=s_i, thêm đường y=f_i·t+dp[i] vào bao dưới. Lời giải cài đặt một Line Container động để xử lý cả các hệ số trùng nhau an toàn.
Chứng minh: Mọi phương án hợp lệ xử lý trạm i thuộc đúng một trong hai loại: chưa xử lý trạm nào trước đó, hoặc trạm được xử lý gần nhất là một j<i. Hai loại này lần lượt có chi phí x·s_i và dp[j]+f_j·s_i. Bao dưới chứa chính xác đường khởi đầu cùng mọi đường sinh bởi các trạng thái j<i, nên truy vấn tại s_i trả đúng dp[i]. Theo quy nạp, giá trị in ra là chi phí nhỏ nhất để xử lý trạm n.