forked from doocs/leetcode
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSolution.cpp
29 lines (29 loc) · 807 Bytes
/
Solution.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class Solution {
public:
int minMoves(vector<int>& nums, int k) {
vector<int> arr;
for (int i = 0; i < nums.size(); ++i) {
if (nums[i]) {
arr.push_back(i);
}
}
int m = arr.size();
long s[m + 1];
s[0] = 1;
for (int i = 0; i < m; ++i) {
s[i + 1] = s[i] + arr[i];
}
long ans = 1L << 60;
int x = (k + 1) / 2;
int y = k - x;
for (int i = x - 1; i < m - y; ++i) {
int j = arr[i];
int ls = s[i + 1] - s[i + 1 - x];
int rs = s[i + 1 + y] - s[i + 1];
long a = (j + j - x + 1L) * x / 2 - ls;
long b = rs - (j + 1L + j + y) * y / 2;
ans = min(ans, a + b);
}
return ans;
}
};