Cod sursa(job #1830267)

Utilizator teogeoBanu Teodora teogeo Data 16 decembrie 2016 14:58:46
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <fstream>

#include <climits>
using namespace std;
int n,k,Max,s,sum,nr,v[16001],st,dr,i,mid,j,sol;
int main()
{
    ifstream cin("transport.in");
    ofstream cout("transport.out");
   cin>>n>>k;
   Max=0;
   s=0;
   for(i=1;i<=n;i++){
    cin>>v[i];
    if(v[i]>Max)
        Max=v[i];
    s=s+v[i];
   }
    st=Max;
    dr=s;
  while(st<=dr){
    mid=(st+dr)/2;//capacitatea camionului
     sum=0;
     nr=1;
    for(j=1;j<=n;j++){
       if(sum+v[j]<=mid){
           sum=sum+v[j];
        }
        else{
            sum=v[j];
            nr++;
        }
    }
  if(nr<=k){
    sol=mid;
    dr=mid-1;
  }
 else
     st=mid+1;
   }
 cout<<sol;
    return 0;
}