#include using namespace std; long long solve(const vector c, long long x) { int n = c.size(); long long ans = 0; for(int i=0; i> b >> n; vector c(n); for(int i=0; i> c[i]; long long left = 0; long long right = (accumulate(c.begin(), c.end(), 0LL) + b) / n; while(right - left > 5){ long long mid1 = (left * 2 + right) / 3; long long mid2 = (left + right * 2) / 3; long long p = solve(c, mid1); long long q = solve(c, mid2); if(p < q) right = mid2; else left = mid1; } long long ans = LLONG_MAX; for(long long i=left; i<=right; ++i) ans = min(ans, solve(c, i)); cout << ans << endl; return 0; }