Cod sursa(job #3245884)

Utilizator Calin2009Gae Mihai Calin Calin2009 Data 30 septembrie 2024 22:52:41
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <bits/stdc++.h>

using namespace std;
int v[16005];

int main()
{
    ifstream cin("transport.in");
    ofstream cout("transport.out");
    int n, k, maxx = 0, s = 0;
    cin >> n >> k;
    for (int i = 1; i <= n; i++) {
      cin >> v[i];
      maxx = max(maxx, v[i]);
      s += v[i];
    }
    int st = maxx;
    int dr = s;
    int mij = 0;
    int ans = 0, drumuri = 0;
    while (st <= dr) {
        mij = (st + dr) / 2;
        int cap = 0;
        drumuri = 1;
        for (int i = 1; i <= n; i++) {
          if (cap + v[i] <= mij) {
            cap += v[i];
          }
          else {
            drumuri++;
            cap = v[i];
          }
        }
        if (drumuri <= k) {
          dr = mij - 1;
          ans = mij;
        }
        else st = mij + 1;
    }
    cout << ans;
    return 0;
}