Pagini recente » Cod sursa (job #402260) | Cod sursa (job #2591519) | Cod sursa (job #121808) | Cod sursa (job #1925757) | Cod sursa (job #1778192)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int n, k, rasp;
int g[16001];
int K(int cap)
{
int si=0, calatorie=1;
for (int i=1; i<=n; i++)
{
if (cap>=si+g[i]) si+=g[i];
else
{
si=g[i];
calatorie++;
}
}
return calatorie;
}
int caut(int a, int b)
{
int m=(a+b)/2;
while (a<=b)
{
int m=(a+b)/2;
if (K(m)<=k)
{
rasp=m;
b=m-1;
}
else a=m+1;
}
return rasp;
}
int main()
{
in>>n>>k;
int m=0,S=0;
for (int i=1; i<=n; i++)
{
in>>g[i];
S+=g[i];
if (g[i]>m) m=g[i];
}
out<<caut(m,S);
return 0;
}