Pagini recente » Cod sursa (job #2867430) | Cod sursa (job #837759) | Cod sursa (job #1792619) | Cod sursa (job #335667) | Cod sursa (job #2293336)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int n,a[16001],s,st,dr,val,mij,k,maxim;
bool e_ok()
{
int i,j,nr=0,x;
for(i=1;i<=n;i++)
{
x=mij;
if(x<a[i])
{
return 0;
}
j=i;
nr++;
while(x-a[j]>=0 && j<=n)
{
x=x-a[j];
j++;
}
i=j-1;
}
if(nr<=k)
return 1;
else
return 0;
}
int main()
{
int i;
f>>n>>k;
for(i=1;i<=n;i++)
{
f>>a[i];
s=s+a[i];
if(a[i]>maxim)
{
maxim=a[i];
}
}
st=maxim;
dr=s;
while(st<=dr)
{
mij=(st+dr)/2;
if(e_ok()==1)
{
val=mij;
dr=mij-1;
}
else
{
st=mij+1;
}
}
g<<val;
return 0;
}