Pagini recente » Cod sursa (job #1549933) | Cod sursa (job #704886) | Cod sursa (job #180794) | Cod sursa (job #2630475) | Cod sursa (job #2980857)
#include <fstream>
using namespace std;
ifstream I ("transport.in");
ofstream O ("transport.out");
int v[16001];
short int n, k;
bool verf(int m)
{
int i=1, j=1, s=0;
for(i=1; i<=n; i++)
{
s=s+v[i];
if(s>m)
{
j++;
if(j>k)
return false;
s=v[i];
}
}
return true;
}
int main()
{
bool x;
int cmax=0, st, dr, mj, i, cmin=-1, sol=-1;
I>>n>>k;
for(i=1; i<=n; i++)
{
I>>v[i];
if(v[i]>cmin)
{
cmin=v[i];
}
cmax=cmax+v[i];
}
st=cmin;
dr=cmax;
while(st<=dr)
{
mj=(st+dr)/2;
x=verf(mj);
if(x==true)
{
dr=mj-1;
sol=mj;
}
else
{
st=mj+1;
}
}
O<<sol;
return 0;
}