Cod sursa(job #967111)
Utilizator | Livia Magureanu livlivi | Data | 27 iunie 2013 10:06:20 |
---|---|---|---|
Problema | Transport | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.64 kb |
#include<cstdio>
using namespace std;
int v[16001];
int nr_tr(int vol,int n){
int i,nr=1,s=0;
for(i=1;i<=n;i++){
if (s+v[i]>vol){
s=0;
nr++;
}
s+=v[i];
}
return nr;
}
int main(){
freopen ("transport.in","r",stdin);
freopen ("transport.out","w",stdout);
int n,k,i,dr=0,st=0;
scanf ("%d%d",&n,&k);
for(i=1;i<=n;i++){
scanf ("%d",&v[i]);
dr+=v[i];
if (v[i]>st) st=v[i];
}
while(st<dr){
if (nr_tr((dr+st)/2,n)<=k) dr=(st+dr)/2;
else st=(dr+st)/2+1;
}
printf ("%d",st);
return 0;
}