#include <bits/stdc++.h>
using namespace std;
#define N 200000 + 10
int n, m, a, k;
map<int, int> M;
bool check(int x)
{
int ans = 0;
int cnt = 0;
for(int i = 1; i <= n; i++)
{
if(M[i] && M[i] <= x)
{
ans += (cnt + 1) / (a + 1);
cnt = 0;
}
else cnt++;
}
ans += (cnt + 1) / (a + 1);
return ans >= k ;
}
int main()
{
cin>>n>>k>>a>>m;
int t;
for(int i = 1; i <= m; i++)
{
scanf("%d", &t);
M[t] = i;
}
int l = 0, r = m + 1;
while(l + 1 < r)
{
int mid = (l + r) >> 1;
if(check(mid)) l = mid;
else r = mid;
}
if(l != m)
printf("%d\n", r);
else printf("-1\n");
return 0;
}
codefoeces 567 D
最新推荐文章于 2022-10-27 16:57:42 发布