Cod sursa(job #1480931)

Utilizator dorumusuroiFMI - Doru Musuroi dorumusuroi Data 3 septembrie 2015 14:23:40
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <cstdio>
#include <vector>
const char iname[] = "transport.in";
const char oname[] = "transport.out";
const int MAX = 16005;
int n, k, a[MAX];

void read(){
    scanf("%d %d", &n, &k);
    for(int i = 0; i < n; ++i){
        scanf("%d", a+i);
    }
}



int main()
{
    freopen(iname, "r", stdin);
    freopen(oname, "w", stdout);
    read();
    int maxim = -1;
    long long st = 0, dr = 0;
    for(int i = 0; i < n; ++i){
        if(i[a] > maxim) maxim = i[a];
        dr+=i[a];
    }
    st = maxim;
    while(st < dr){
        int mid = st + ((dr-st)>>1);
        int required = 1;
        long long crtLoad = 0;
        for(int i = 0; i < n; ++i){
            if(crtLoad + i[a] <= mid){
                crtLoad += i[a];
            }
            else{
                ++required;
                crtLoad = i[a];
            }
        }
        if(required <= k)
            dr = mid;
        else
            st = mid+1;
    }
    printf("%lld", st);
    return 0;
}