#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const ll N = 1e5 + 2;
ll lo[N], hi[N];
int main() {
ll n, m, r, x, y, lo1, hi1, cnt, s, i, j, ans, t;
cin >> n >> m;
ll a[n + 2];
pair < ll, ll > b[n + 2];
vector < ll > v;
for (i = 1; i <= n; i ++) {
cin >> a[i];
b[i] = {a[i], i};
}
sort ( b + 1, b + n + 1);
// reverse(b + 1, b + n + 1);
for (i = 1; i <= n; i ++) {
s = (i - 1) / m;
a[b[i].second] = s;
}
for (i = 1; i <= n; i ++) {
if ( v.empty() || v.back() <= a[i] ) {
v.push_back(a[i]);
}
else {
r = upper_bound(v.begin(), v.end(), a[i]) - v.begin();
v[r] = a[i];
}
}
cout << n - v.size() << endl;
}
# | 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... |