#define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair i_i; typedef pair ll_i; typedef pair d_i; typedef pair ll_ll; typedef pair d_d; struct edge { int u, v; ll w; }; ll MOD = 1000000007; ll _MOD = 1000000009; double EPS = 1e-10; int main() { int N, K; cin >> N >> K; vector W(N), sign(N); for (int i = 0; i < N; i++) { cin >> W[i]; sign[i] = W[i] > 0 ? +1 : -1; W[i] = abs(W[i]); } vector w = W; sort(w.begin(), w.end()); w.erase(unique(w.begin(), w.end()), w.end()); int n = w.size(); for (int i = 0; i < N; i++) W[i] = lower_bound(w.begin(), w.end(), W[i]) - w.begin(); vector a(n); for (int i = 0; i < N; i++) { if (sign[i] == +1) { int cnt = 0; for (int j = W[i]; j < n; j++) cnt += a[j]; if (cnt < K) a[W[i]]++; } else a[W[i]] = max(0, a[W[i]] - 1); } int sum = 0; for (int i = 0; i < n; i++) sum += a[i]; cout << sum << endl; }