#include <cstdio>
#include <iostream>
#include <iomanip>
#include <string>
#include <cstdlib>
#include <cstring>
#include <queue>
#include <set>
#include <vector>
#include <map>
#include <algorithm>
#include <cmath>
#include <stack>
#define INF 0x3f3f3f3f
#define IMAX 2147483646;
#define LINF 0x3f3f3f3f3f3f3f3f
#define ll long long
#define ull unsigned long long
#define uint unsigned int
using namespace::std;
int n, x, k, qq[5010], add;
int vis[5010];
int c(int now){
memset(vis, 0, sizeof(vis));
vis[now] = 1;
add = 0; qq[add++] = now;
for (int kase = 1; kase <= x; kase++) {
int t = add;
for (int i = 0; i < t; i++)
for (int j = max(1, qq[i] - k); j <= n; j++)
if (vis[j] == 0) {
vis[j] = 1;
qq[add++] = j;
break;
}
}
for (int i = 1; i <= n; i++)
if (vis[i] == 0) return 0;
return 1;
}
int main () {
scanf("%d %d", &n, &k); x = 0;
for (int i = 1; i < n; x++, i *= 2);
int l = 1, r = n;
while (l < r) {
int mid = (l + r + 1) >> 1;
if (c(mid))l = mid;
else r = mid - 1;
}
printf("%d\n", l);
return 0;
}
06-17
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交