Pagini recente » Cod sursa (job #567285) | Cod sursa (job #687751) | Cod sursa (job #424383) | Cod sursa (job #3128708) | Cod sursa (job #1225617)
#include <fstream>
using namespace std;
int k, n,a[100004];
inline bool Check(const long long 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<<31;
int sol = -1;
while(Left <= Right){
long long mid = (Left + Right)/2;
if(Check(mid,k)){
sol = mid;
Left = mid + 1;
}
else
Right = mid-1;
}
g<<sol<<"\n";
g.close();
return 0;
}