Pagini recente » Cod sursa (job #1062066) | Cod sursa (job #2738223) | Cod sursa (job #1649571) | Cod sursa (job #384386) | Cod sursa (job #1225612)
#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;
int sum = 0;
for(int i = 1;i <= j && sum < k*val; ++i)
sum += a[i];
if(sum >= 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;
}