Cod sursa(job #2277762)

Utilizator LucianTLucian Trepteanu LucianT Data 6 noiembrie 2018 20:15:07
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <fstream>
using namespace std;

const int maxN=16001;

int n,k;
int v[maxN];

bool good(int x){
    int cnt=1;
    int currWeight=x;

    for(int i=1;i<=n;i++){
        if(v[i]>x)
            return false;

        if(v[i]>currWeight){
            cnt++;
            currWeight=x;
        }

        currWeight-=v[i];

        if(cnt>k)
            return false;
    }

    return true;
}

int main(){
    ifstream cin("transport.in");
    ofstream cout("transport.out");

    cin>>n>>k;
    for(int i=1;i<=n;i++)
        cin>>v[i];

    int sol;
    int step=1<<30;

    for(sol=0;step>0;step>>=1)
        if(good(sol+step)==false)
            sol+=step;

    cout<<sol+1;

    return 0;
}