Cod sursa(job #1796640)

Utilizator d0rina2011Craciun Dorina d0rina2011 Data 3 noiembrie 2016 17:29:34
Problema Transport Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("transport.in");
ofstream fout("transport.out");

long long n, c, k, v[16001];
int main()
{
    long long i, j, s = 0, cmax = 0, ok = 0, m, nr, sp, ip, ii;
    fin>>n>>k;
    for(i = 1; i <= n; ++i){
        fin>>v[i];
        s += v[i];
        if(v[i] > cmax)cmax = v[i];
    }
    i = cmax;
    j = s;
    while(i <= j && ok == 0){
        m = (i + j) / 2;
        nr = 0;
        sp = 0;
        for(ip = 1; ip <= n; ++ip){
            if(sp + v[ip] <= m){
                sp += v[ip];
            } else {
                nr++;
                sp = v[ip];
                ii= ip;
            }
        }
        if(ii != n)nr++;
        if(nr <=
            k) {
            j = m - 1;
        } else {
            i = m + 1;
        }
    }
    fout<<m;
    return 0;
}