Cod sursa(job #1041254)

Utilizator buzu.tudor67Tudor Buzu buzu.tudor67 Data 25 noiembrie 2013 18:02:36
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<fstream>
using namespace std;
ifstream fi("transport.in");
ofstream fo("transport.out");

int n,k,i;
int v[16005];
int mid,st,dr=0,maxim=0;

bool posibil(int c){
     int i,s=0,nr=1;
     for(i=1;i<=n;i++) {
                        s+=v[i];
                        if (s>c) {
                                  nr++;
                                  s=v[i];
                                 }
                        if (nr>k) return 0;
                       }
     return 1;
}

int main(){
    fi>>n>>k;
    for(i=1;i<=n;i++) {
                       fi>>v[i];
                       if (v[i]>maxim) maxim=v[i];
                       dr+=v[i];
                      }
                      
    st=maxim;
    
    while(st!=dr)
         {
          mid=(st+dr)/2;
          if (posibil(mid)) dr=mid;
          else st=mid+1;
         }
    
    fo<<dr;
    
    fi.close();
    fo.close();
    return 0;
}