Pagini recente » Cod sursa (job #2237996) | Cod sursa (job #940629) | Cod sursa (job #2959689) | Cod sursa (job #2836454) | Cod sursa (job #1225613)
#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(int i = 1;i <= j && sum < 1LL*k*val; ++i)
sum += a[i];
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();
int Left = a[1];
int Right = 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;
}