题目描述

略。

题解

二分长度即可。

#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;
}