Cod sursa(job #1480929)

Utilizator dorumusuroiFMI - Doru Musuroi dorumusuroi Data 3 septembrie 2015 14:19:00
Problema Transport Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 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);
    }
}

bool validateTransport(int val){
    int crtLoad = 0, cnt = 0;
    for(int i = 0; i < n; ++i){
        crtLoad += a[i];
        if(crtLoad > val){
            crtLoad = a[i];
            cnt++;
        }
    }
    if(cnt <= k) return true;
    else return false;
}

int main()
{
    freopen(iname, "r", stdin);
    freopen(oname, "w", stdout);
    read();
    int st, dr = 0, maxim = -1;
    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);
        if(validateTransport(mid)==true)
            dr = mid;
        else
            st = mid + 1;
    }
    printf("%d", st);
    return 0;
}