Cod sursa(job #3005580)

Utilizator georgecristian2002Raducanu George-Cristian georgecristian2002 Data 17 martie 2023 09:03:00
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <bits/stdc++.h>

using namespace std;

#pragma GCC optimize("O2")
#define N 16000

int v[N];

bool check(int n, int k, int x) {
    int part_sum = 0;
    int cnt = 0;
    for (int i = 1; i <= n; ++i) {
        part_sum += v[i];
        if (part_sum >= x) {
            cnt++;
            part_sum = v[i];
        }
    }
    cnt++;
    if (cnt <= k)
        return 1;
    return 0;
}

int main(void)
{
    int n, k, sum = 0, maxi = -1;
    ifstream fin("transport.in");
    fin >> n >> k;
    for (int i = 1; i <= n; ++i) {
        fin >> v[i];
        if (v[i] > maxi)
            maxi = v[i];
        sum += v[i];
    }
    fin.close();
    int st = maxi;
    int dr = sum;
    int mij;

    while (st < dr - 1) {
        mij = (dr - st) / 2 + st;
        if (check(n, k, mij))
            dr = mij;
        else st = mij;
    }

    ofstream fout("transport.out");
    fout << st;
    fout.close();
    return 0;
}