Cod sursa(job #2467670)

Utilizator cyber_ghSoltan Gheorghe cyber_gh Data 4 octombrie 2019 19:51:45
Problema Transport Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <bits/stdc++.h>

using namespace std;

int N, K;
int A[16010];

bool check(int cap) {
    if (cap <= 0) return 0;
    int cnt = 1;
    int sum = 0;
    for (int i = 1; i <= N; i++) {
        if (sum + A[i] > cap) {
            sum = A[i];
            cnt++;
        } else {
            sum += A[i];
        }
    }

    return cnt <= K;
}

int main () {

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

    fin >> N >> K;
    for (int i = 1; i <= N; i++)
        fin >> A[i];


    int st = 1;
    int dr = 1000000;
    while (st <= dr) {
        int mid = (st + dr) / 2;
        if (check(mid)) dr = mid - 1;
        else st = mid + 1 ;
        //cout << st << " " << dr<< endl;
    }
    while(!check(st)) st++;
    fout << st;
    // for (int i = 1; i <= 20; i++)
    //     cout << i << " " << check(i) << endl;

    return 0;
}