Cod sursa(job #1768152)

Utilizator Kln1000Ciobanu Bogdan Kln1000 Data 30 septembrie 2016 12:23:07
Problema Transport Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

ifstream f ("transport.in");
ofstream t ("transport.out");

int n,k;
vector <int> v;

bool verify(int capacitate){
    int c=1,s=0;
    for (int i=0;i<n;++i){
        if (v[i]>capacitate) return false;
        if (s+v[i]<=capacitate)
        s+=v[i];
        else{
            s=v[i];++c;
            if (c>k) return false;
        }}
    return true;}

int64_t caut_bin(int64_t low,int64_t up)
{
    int64_t st=low,dr=up;
    while(st<=dr)
    {
        int64_t mid=(st+dr)/2;
        if(!verify(mid)) st=mid+1;
        else dr=mid-1;
    }
    return st;
}

int main()
{
    f>>n>>k;
    v.resize(n);
    for (int i=0;i<n;++i)
        f>>v[i];
    t<<caut_bin(0,1<<16);
    return 0;
}