Cod sursa(job #2066176)

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

using namespace std;

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

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

bool check(int x){
        if(x<Max)
                return 0;
        int V=0,r=0;
        for(int i=0;i<n;i++){
                if(V+v[i]>x){
                        r++;
                        V=v[i];
                }else
                        V+=v[i];
                if(r>k)
                        return 0;
        }
        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,r);
        }
}

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