#include #include #include int main() { int n; int64_t K; std::cin >> n >> K; std::vector xs(n); std::vector ys(n); for (int i = 0; i < n; i++) { std::cin >> xs[i] >> ys[i]; } long double bestdiam = 0; int count = 0; int j = 0; for (int i = 0; i < n; i++) { int ip1 = (i + 1) % n; int64_t dx = xs[ip1] - xs[i]; int64_t dy = ys[ip1] - ys[i]; while (true) { int64_t dx1 = xs[j] - xs[i]; int64_t dy1 = ys[j] - ys[i]; int64_t area1 = dx * dy1 - dy * dx1; long double dist = std::sqrt((long double)(dx1 * dx1 + dy1 * dy1)); int nextj = (j + 1) % n; if (dist > bestdiam) { bestdiam = dist; count = 0; } if (nextj != i && j != ((i + 1) % n) && dist == bestdiam) { count++; } int64_t dx2 = xs[nextj] - xs[i]; int64_t dy2 = ys[nextj] - ys[i]; int64_t area2 = dx * dy2 - dy * dx2; if (area2 < area1) break; else j = nextj; } } count /= 2; long double ans = std::ceil(K / 2.0 / bestdiam); if (2.0 * ans * bestdiam == K && ans > count) ans += 1.0; std::cout << int64_t(ans) << std::endl; }