Pagini recente » Cod sursa (job #453480) | Cod sursa (job #2456176) | Cod sursa (job #113774) | Cod sursa (job #1076040) | Cod sursa (job #1497898)
#include <cstdio>
#include <cstdlib>
using namespace std;
int v[16005];
int main()
{
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
int n, k, maxim=0, minim=0, capacitate=0;
scanf("%d%d",&n,&k);
for(int i=1; i<=n; i++)
{
scanf("%d",&v[i]);
if(v[i]>minim)
minim=v[i];
maxim+=v[i];
}
while(minim<=maxim)
{
int trans=0, s=0, m;
m=(minim+maxim)/2;
for(int i=1; i<=n; i++)
{
s+=v[i];
if(i==n)
{
if(s>m)
trans+=2;
else
trans+=1;
}
else
{
if(s>m && s==v[i])
{
trans=k+1;
break;
}
else
{
if(s>m)
{
s=v[i];
trans++;
}
}
}
}
if(trans<=k)
{
capacitate=m;
maxim=m-1;
}
else
minim=m+1;
}
printf("%d",capacitate);
return 0;
}