Cod sursa(job #2048175)

Utilizator mari2001Maria Ionescu mari2001 Data 25 octombrie 2017 19:52:28
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.5 kb
#include<cstdio>
int v[16005],n,k;
int solve(int x){
int s=0,i,cnt=0;
for(i=1;i<=n;i++){
s=s+v[i];
if (x<v[i])
return 0;
if (s>x)
cnt++,s=v[i];}
if (cnt+1<=k)
return 1;
return 0;}
int main(){
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
int i,st,dr,mij,last;
scanf("%d%d",&n,&k);
for(i=1;i<=n;i++)
scanf("%d",&v[i]);
st=1;
dr=256000000;
while(st<=dr){
mij=(st+dr)/2;
if (solve(mij))
last=mij,dr=mij-1;
else
st=mij+1;}
printf("%d\n",last);
return 0;}