#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... |