#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,k; cin >> n >> k;
vector<int> a(n + 1);
for(int i = 1; i <= n; i++){
cin >> a[i];
}
vector<int> id(n + 1);
for(int i = 1; i <= n; i++) id[i] = i;
sort(1 + id.begin(), id.end(), [&](int x, int y){return a[x] > a[y];});
vector<int> b(n + 1);
for(int i = 1; i <= n; i++){
b[id[i]] = (i + k - 1) / k;
}
#define sz(v) (int)(v).size()
vector<int> lis;
for(int i = 1; i <= n; i++){
if(!sz(lis)) lis.push_back(b[i]);
else{
int p = upper_bound(lis.begin(), lis.end(), b[i]) - lis.begin();
if(p == sz(lis)){
lis.push_back(b[i]);
}
else lis[p] = b[i];
}
}
cout << n - sz(lis) << "\n";
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |