Pagini recente » Cod sursa (job #1453112) | Cod sursa (job #2293206) | Cod sursa (job #2733439) | Cod sursa (job #2871720) | Cod sursa (job #1225615)
#include <fstream>
using namespace std;
int k, n,a[100004];
inline bool Check(const int val,int k){
int j;
for(j = n;k > 0 && j >= 1 && a[j] > val; --j,--k);
if(k==0)
return 1;
long long sum = 0;
for(; j >= 1; --j)
sum += a[j];
if(sum >= 1LL*k*val)
return 1;
return 0;
}
int main(){
ifstream f("grupuri.in");
ofstream g("grupuri.out");
f >> k >> n;
for(int i = 1;i <= n; ++i)
f >> a[i];
f.close();
long long Left = a[1];
long long Right = 1LL*a[n]*a[n];
int sol = -1;
while(Left <= Right){
int mid = (Left + Right)/2;
if(Check(mid,k)){
sol = mid;
Left = mid + 1;
}
else
Right = mid-1;
}
g<<sol<<"\n";
g.close();
return 0;
}