#include using namespace std; #define int long long int ans = 0, need = 0; vector cnt, sum; vector v; int N, K; void dfs(int n) { if (need > N-n) return; if (n == N) { int m = 0, M = 0; for (int i = 0; i < K; ++i) { assert(cnt[i] > 0); if (sum[i]*cnt[m] < sum[m]*cnt[i]) { m = i; } if (sum[i]*cnt[M] > sum[M]*cnt[i]) { M = i; } } int num = sum[M]*cnt[m]-sum[m]*cnt[M]; int den = cnt[M]*cnt[m]; ans = max(ans, (num+den-1)/den); } else { for (int i = 0; i < K; ++i) { if (cnt[i] == 0) --need; cnt[i]++; sum[i] += v[n]; dfs(n+1); sum[i] -= v[n]; --cnt[i]; if (cnt[i] == 0) ++need; } } } signed main() { cin >> N >> K; v.resize(N); for (int i = 0; i < N; ++i) { cin >> v[i]; } cnt = vector(K, 0); sum = vector(K, 0); need = K; dfs(0); cout << ans << endl; }