Cod sursa(job #816788)

Utilizator stefan.cStefan Cucea stefan.c Data 17 noiembrie 2012 13:06:00
Problema Transport Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include<stdio.h>
using namespace std;
int v[16001],n;
long verificare(long cap)
{int p=0,i=1;
long s1=0;
while(i<=n){
 if(s1+v[i]>cap)
    {s1=0;
    p++;
    }
  else
    {s1+=v[i];
    if(s1==cap || i==n)
    {s1=0;
    p++;
    }
    i++;}
}
return p;
}
int main()
{int k,i,min;
long s=0,m,nr,sol;
    freopen("transport.in","r",stdin);
    freopen("transport.out","w",stdout);
scanf("%d%d",&n,&k);
for(i=1;i<=n;i++){
   scanf("%d",&v[i]);
   s+=v[i];
}
min=v[1]-1;
s+=1;
while(min<=s){
    m=(min+s)/2;
    nr=verificare(m);
    if(nr<=k)
    s=m-1;
    else
    min=m+1;
}
printf("%ld",m);
return 0;
}