Cod sursa(job #1009128)
| Utilizator | Data | 12 octombrie 2013 15:26:26 | |
|---|---|---|---|
| Problema | Transport | Scor | 30 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.58 kb |
#include <cstdio>
using namespace std;
int n, k;
int a[16010];
int verif(int x)
{
int nr=0, s=0, i;
for(i=0;i<n;i++)
{
if(s+a[i]>x)
{
nr++;
s=a[i];
}
else s+=a[i];
}
if(nr+1>k)
return 0;
else return 1;
}
int main()
{
freopen("transport.in", "r", stdin);
freopen("transport.out", "w", stdout);
int i, l, r, med;
scanf("%d%d", &n, &k);
for(i=0;i<n;i++)
scanf("%d", &a[i]);
l=1;r=16000;
while(l<=r)
{
med=(l+r)/2;
if(verif(med)==1)
r=med-1;
else l=med+1;
}
printf("%d", l);
return 0;
}
