Pagini recente » Cod sursa (job #700261) | Cod sursa (job #1448380) | Cod sursa (job #2914068) | Cod sursa (job #800692) | Cod sursa (job #1225609)
#include <fstream>
using namespace std;
int k, n,a[100004];
inline bool Check(const int val,int k){
int i = 0;
int j = n;
while(k > 0){
int x = a[j];
while(i < j && x < val)
{
x += a[i];
++i;
}
if(x < val)
return 0;
--j,--k;
}
return 1;
}
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;
}