Pagini recente » Cod sursa (job #1810355) | Sandbox (cutiuţa cu năsip) | Cod sursa (job #1112391) | Cod sursa (job #1882245) | Cod sursa (job #2842432)
#include <fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
int n,k,vol,v[16005],st,dr,sol,NMAX,max1=-1;
int check(int x)
{
int cnt=0,suma=0;
for(int i=1;i<=n;i++)
{
suma+=v[i];
if(suma>x)
{
suma=v[i];
cnt++;
}
}
cnt++;
if(cnt<=k)
return 1;
else
return 0;
}
int main()
{
cin>>n>>k;
for(int i=1;i<=n;i++)
{
cin>>v[i];
NMAX+=v[i];
max1=max(max1,v[i]);
}
st=max1;
dr=NMAX;
while(st<=dr)
{
int mij=(st+dr)>>1;
if(check(mij)==1)
{
sol=mij;
dr=mij-1;
}
else
{
st=mij+1;
}
}
cout<<sol;
return 0;
}