Cod sursa(job #2066191)

Utilizator marcudanfDaniel Marcu marcudanf Data 14 noiembrie 2017 19:20:12
Problema Transport Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <fstream>
#include <iostream>

using namespace std;

ifstream fin("transport.in");
ofstream fout("transport.out");

int n,k,v[16005],sol,Max,s;

bool check(int x){
        int V=0,r=0;
        for(int i=0;i<n;i++){
                r++;
                V=0;
                while(V<=x)
                        V+=v[i++];
        }
        return (r<=k);
}

void c_bin(int l,int r){
        if(l>=r)
                return;
        int mid=(l+r)/2;
        if(check(mid)){
                sol=mid;
                c_bin(l,mid-1);
        }else{
                c_bin(mid+1,r);
        }
}

int main(){
        fin>>n>>k;
        for(int i=0;i<n;i++){
                fin>>v[i];
                s+=v[i];
                if(v[i]>Max)
                        Max=v[i];
        }
        c_bin(Max,s);
        fout<<sol;
        return 0;
}