#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; #define FOR(i,a,b) for(ll i=(a);i<(b);++i) #define ALL(v) (v).begin(), (v).end() #define p(s) cout<<(s)< void vprint(T &V){ for(auto v : V){ cout << v << " "; } cout << endl; } ll B, N; vector A; ll how_many(ll target){ ll stock = B; ll scarcity = 0; for(ll a : A){ if(a>target){ ll diff = a - target; stock += diff; } else if(a=scarcity){ // 集めた分 ll collect = stock - B; // 埋める分 // scarcity return collect + scarcity; }else{ // 達成不可能 return inf; } } int main(){ cin.tie(0); ios::sync_with_stdio(false); // input cin >> B >> N; A.resize(N); FOR(i, 0, N){ cin >> A.at(i); } sort(ALL(A)); ll left = 0; ll right = *max_element(ALL(A)); ll p0, p1; FOR(i, 0, 1000){ double diff = right - left; p0 = left + diff * 1 / 3.0f; p1 = left + diff * 2 / 3.0f; ll n0 = how_many(p0); ll n1 = how_many(p1); if(n0==inf){ right = p0; } else if(n1==inf){ right = p1; } else if(n0