Pagini recente » Cod sursa (job #1362425) | Istoria paginii runda/oni_10_2 | Istoria paginii runda/temajunioriichb/clasament | Cod sursa (job #638531) | Cod sursa (job #1731733)
#include <iostream>
#include <stdio.h>
using namespace std;
int v[16001],n,k;
int verificare (int cap)
{
int s=0;
int transport=0;
for(int i=1; i<=n; i++)
{
s+=v[i];
if(s > cap)
{
transport++;
if(transport > k)
{
break;
}
s=v[i];
}
}
if( transport < k && s <= cap )
{
return 1;
}
return 0;
}
int main ()
{
int sol;
freopen("transport.in" , "r", stdin);
freopen("transport.out", "w", stdout);
scanf("%d%d", &n, &k);
int max=0,suma=0;
for(int i=1; i<=n; i++)
{
scanf("%d", &v[i]);
if(v[i] > max) max= v[i];
suma+=v[i];
}
int ls=max;
int ld=suma;
int mid;
while( ls <= ld)
{
mid=(ls+ld)/2;
if( verificare(mid))
{
sol=mid;
ld=mid-1;
}
else
{
ls=mid+1;
}
}
printf("%d\n", sol);
return 0;
}