Cod sursa(job #1828424)

Utilizator alittlezzCazaciuc Valentin alittlezz Data 13 decembrie 2016 11:56:29
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <cstdio>
#include <string.h>
using namespace std;

int v[16005];

int check(long long val, int n){
    int i;
    int ret = 0;
    long long sum = 0;
    for(i = 1;i <= n;i++){
        sum += v[i];
        if(sum > val){
            sum = v[i];
            ret++;
        }
    }
    ret++;
    return ret;
}

int main()
{
    freopen("transport.in", "r", stdin);
    freopen("transport.out", "w", stdout);
    int n,i,k,sum;
    scanf("%d %d", &n, &k);
    for(i = 1;i <= n;i++){
        scanf("%d", &v[i]);
        sum += v[i];
    }
    long long lf,rg;
    lf = 1;
    rg = 1e16;
    long long md;
    while(lf < rg){
        md = (lf + rg)/2;
        if(check(md, n) <= k){
            rg = md;
        }else{
            lf = md + 1;
        }
    }
    printf("%lld", lf);
    return 0;
}