[ABC352D] Permutation Subsequence 思维题set
作者:
多米尼克領主的致意
,
2024-05-05 15:43:10
,
所有人可见
,
阅读 3
rbegin()指向最后一位 而 end()指向最后一位的后一位
cd:
#include<bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
int pos[N];
int n, k;
set<int>st;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n >> k;
for(int i = 1;i <= n;i++)
{
int x;
cin >> x;
pos[x] = i;
}
int ans = 0x3f3f3f3f;
for(int i = 1;i <= k;i++)st.insert(pos[i]);
ans = *st.rbegin() - *st.begin();
for(int i = k + 1;i <= n;i++)
{
st.erase(pos[i - k]), st.insert(pos[i]);
ans = min(ans, *st.rbegin() - *st.begin());
}
cout << ans <<endl;
}