Cod sursa(job #2066186)

Utilizator marcudanfDaniel Marcu marcudanf Data 14 noiembrie 2017 19:15:24
Problema Transport Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 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++){
                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;
        cout<<mid<<endl;
        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];
                s+=v[i];
                if(v[i]>Max)
                        Max=v[i];
        }
        c_bin(Max,s);
        fout<<sol;
        return 0;
}