BUY
Có \(N\) cửa hàng xếp cạnh nhau thành một hàng ngang, cửa hàng thứ \(i\) được kí hiệu là \(s_i\) và nằm ở vị trí \(i\). Nam muốn mua \(M\) món hàng. Vì không biết nên chọn cửa hàng nào để mua được sản phẩm uy tín và chất lượng, đã quyết định sinh ra một dãy \(B\) gồm \(N\) phần tử \(b_1, b_2, ..., b_N\) bằng một thuật toán nhị phân ngẫu nhiên vừa mới nghĩ ra. Nếu \(b_i = 1\) thì Nam có thể sẽ chọn mua sản phẩm của cửa hàng này và \(b_i = 0\) nghĩa là Nam sẽ không ghé vào để mua.
Khoảng cách giữa hai cửa hàng \(s_i\), và \(s_j\) là \(|j − i|\).
Nam muốn đứng ở \(s_1\) bắt đầu để đi mua đủ \(M\) món hàng cần thiết. Tuy nhiên mua nhiều thì phải mang nặng, mà nặng thì tốc độ di chuyển của Nam sẽ chậm đi. Với một số \(K\) cho trước, thời gian di chuyển từ \(s_i\) đến \(s_j\) của Nam được tính như sau:
• Nếu cậu ấy chưa mua món hàng nào, thời gian di chuyển là \(1 × |j − i|\)
• Nếu cậu ấy đã mua \(x\) món hàng, thời gian di chuyển là \(x × K × |j − i|\)
Bạn gái của Nam là một người sống với châm ngôn thời gian là vàng và muốn dành nhiều thời gian riêng ở bên Nam. Biết được điều này, Nam muốn tìm cách mua \(M\) món hàng từ \(M\) cửa hàng khác nhau sao cho thời gian đi mua sắm là nhỏ nhất để dành nhiều thời gian hơn ở với bạn gái mình. Được biết cả hai người chỉ di chuyển theo một chiều từ trái sang phải và không muốn đi theo chiều ngược lại. Nếu cậu ấy không thể mua đủ số lượng thì ghi ra \(−1\).
Input:
• Dòng đầu tiên chứa ba số nguyên \(N, M, K\) (\( 1 ≤ M ≤ N ≤ 2 × 10^5, 1 ≤ K ≤ 10^4 \)).
• Dòng tiếp theo chứa \(N\) số nguyên nhị phân mô tả dãy \(b\).
Output:
• Ghi kết quả ra một số nguyên duy nhất là thời gian ít nhất để Nam mua đủ \(M\) món hàng từ \(M\) cửa hàng khác nhau. Nếu không thể thì ghi ra \(−1\).
Sample Input
7 1 3
0 0 0 1 1 1 1
Sample Output
3
Comments