Cod sursa(job #1768153)

Utilizator Kln1000Ciobanu Bogdan Kln1000 Data 30 septembrie 2016 12:27:05
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 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(int64_t capacitate){
    int_fast32_t 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,2147483647);
    return 0;
}