题目描述
略。
题解
二分长度即可。
#include <bits/stdc++.h> #define INF 2000000000 using namespace std; typedef long long ll; int read(){ int f = 1, x = 0; char c = getchar(); while(c < '0' || c > '9'){if(c == '-') f = -f; c = getchar();} while(c >= '0' && c <= '9')x = x * 10 + c - '0', c = getchar(); return f * x; } int n, m; int a[200005]; void init(){ n = read(), m = read(); for (int i = 1; i <= n; ++i) a[i] = read(); } void solve(){ int l = 0, r = 1000000000; while (r > l){ int mid = (l + r + 1) >> 1; ll cnt = 0; for (int i = 1; i <= n; ++i) cnt += a[i] / mid; if (cnt >= m) l = mid; else r = mid - 1; } printf("%d\n", l); } int main(){ init(); solve(); return 0; }