Pagini recente » Cod sursa (job #781898) | Cod sursa (job #680401) | Cod sursa (job #2119166) | Cod sursa (job #561445) | Cod sursa (job #2979771)
#include <fstream>
using namespace std;
ifstream in ("transport.in");
ofstream out ("transport.out");
int v[16000], 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 cmin=-1, cmax=0, st, dr, mj, i, sol=-1;
in>>n>>k;
for(i=1; i<=n; i++)
{
in>>v[i];
if(v[i]>cmin)
{
cmin=v[i];
}
cmax=cmax+v[i];
}
st=cmin;
dr=cmax;
if(n<=k)
out<<cmin;
else
{
while(st<=dr)
{
mj=(st+dr)/2;
x=verf(mj);
//out<<m<<" "<<x;
if(x==true)
{
dr=mj;
sol=mj;
}
else
{
st=mj+1;
}
}
}
out<<sol;
return 0;
}