Cod sursa(job #1268882)

Utilizator rusuraresRares Rusu rusurares Data 21 noiembrie 2014 16:53:08
Problema Transport Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 0.64 kb
#include<cstdio> using namespace std; int v[16001],n,k; bool ok(int C){     int tr,s,i;     tr=s=0; for(i=1;i<=n;i++){ if(v[i]>C) return 0; s=s+v[i]; if(s>C) tr++,s=v[i]; } if(s>0) tr++; return tr<=k; } int bs(int st,int dr) {     int med,last=dr+1;     while(st<=dr)     {         med=dr-((dr-st)>>1);         if(ok(med))             last=med,dr=med-1;         else            st=1+med;     }     return last; } int main(){     freopen("transport.in","r",stdin);     freopen("transport.out","w",stdout);     scanf("%d%d",&n,&k);     int i,smax=0;     for(i=1;i<=n;i++){         scanf("%d",&v[i]);     smax=smax+v[i];     }     printf("%d\n",bs(1,smax)); }