Pagini recente » Cod sursa (job #1025328) | Cod sursa (job #2287609) | Cod sursa (job #1619854) | Cod sursa (job #135350) | Cod sursa (job #1644604)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
const int Nmax = 16005;
int n, k, sol;
int a[Nmax];
bool ok(int s)
{
int cont = 0, suma = 0;
for(int i = 1; i <= n; i++)
{
if(suma+a[i] < s) suma += a[i];
else
{
cont++;
suma = a[i];
}
}
if(cont <= k) return 1;
return 0;
}
int main()
{
f>>n>>k;
int li = 1, ls = 16000;
for(int i = 1; i <= n; i++) f>>a[i];
while(li<=ls)
{
int mid = (li+ls)/2;
if(ok(mid))
{
sol = mid;
ls = mid-1;
}
else li = mid+1;
}
g<<sol<<'\n';
return 0;
}