Cod sursa(job #1138152)
| Utilizator | Data | 9 martie 2014 16:58:34 | |
|---|---|---|---|
| Problema | Transport | Scor | 50 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.61 kb |
#include<stdio.h>
#include<iostream>
using namespace std;
int v[16001];
int main(){
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
int nr,k,i,s,l1,l2,cate,mij,min;
scanf("%d%d",&nr,&k);
for(i=1;i<=nr;i++){
scanf("%d",&v[i]);
s=s+v[i];
}
l1=1;
l2=s;
while(l1<=l2){
s=0;
cate=1;
mij=(l1+l2)/2;
for(i=1;i<=nr;i++)
if(s+v[i]<=mij)
s=s+v[i];
else{
cate++;
s=v[i];
}
if(cate<=k){
l2=mij-1;
min=mij;
}
else
l1=mij+1;
}
cout<<min;
return 0;
}
