Cod sursa(job #2277760)

Utilizator LucianTLucian Trepteanu LucianT Data 6 noiembrie 2018 20:10:42
Problema Transport Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.61 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=0;

    for(int i=1;i<=n;i++)
        if(currWeight+v[i]<=x)
            currWeight+=v[i];
        else{
            currWeight=v[i];
            cnt++;
        }

    return cnt<=k;
}

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;
}