Cod sursa(job #1726859)

Utilizator liviu23Liviu Andrei liviu23 Data 9 iulie 2016 11:30:22
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
#define DIM 16000
using namespace std;

int n,k,v[DIM];

bool isOk(int c) {
    int tr=0,sum=0;
    for(int i=0;i<n;i++) {
        if(sum+v[i]<=c)
            sum+=v[i];
        else
            sum=v[i],tr++;
        if(tr>k)
            return false;
    }
    if(sum!=0&&tr==k)
        return false;
    return true;
}

int main()
{
    ifstream fin("transport.in");
    ofstream fout("transport.out");
    fin>>n>>k;
    int st=0,dr=0,mij,ans=0;
    for(int i=0;i<n;i++) {
        fin>>v[i];
        st=max(st,v[i]);
        dr+=v[i];
    }
    while(st<=dr) {
        mij=(st+dr)/2;
        if(isOk(mij)) {
            ans=mij;
            dr=mij-1;
        }
        else
            st=mij+1;
    }
    fout<<ans;
    return 0;
}