#include<bits/stdc++.h>
using namespace std;
#define f first
#define s second
int main()
{
    int n,k;
    cin>>n>>k;
    map<int,int> m;
    for(int i=0;i<n;i++)
    {
        int a;
        cin>>a;
        m[a]=i;
    }
    vector<pair<int,int>> v;
    int i=0;
    for(auto [x,y]:m)
    {
        v.push_back({i/k,y});
        i++;
    }
    sort(v.begin(),v.end(),[](auto &a1,auto &a2)
    {
        if(a1.f==a2.f)
        return a1.s<a2.s;
        return a1.f<a2.f;
    });
    int dp[n];
    int sz=0;
    for(int i=0;i<n;i++)
    {
        int d=lower_bound(dp,dp+sz,v[i].s)-dp;
        if(d==sz)
        sz++;
        dp[d]=v[i].s;
    }
    cout<<n-sz;
}
| # | 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... |