Cod sursa(job #2923506)

Utilizator Luka77Anastase Luca George Luka77 Data 14 septembrie 2022 23:18:06
Problema Transport Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <bits/stdc++.h>
using namespace std;

ifstream f("transport.in");
ofstream g("transport.out");

const int NMAX = 16005;
int arr[NMAX], n, k;

inline void solve()
{
    int ans = INT_MAX, s = 0;
    for(int i=1;i<=n;++i)
        s+=arr[i];
    int st = 1, dr = s;
    while(st <= dr)
    {
        //cout << st << ' ' << dr << ' ';
        int num = 0, rez = 1;
        int mid = (st+dr)/2;
        //cout << mid << ' ';
        for(int i=1;i<=n;++i)
        {
            if(arr[i]+num <= mid)
                num+=arr[i];
            else
                rez++, num = arr[i];
        }
        //cout << rez << ' ';
        if(rez > k)
            st = mid+1;
        else
            dr = mid-1, ans = min(ans,mid);
        //cout << st << ' ' << dr << '\n';
    }
    g << ans;
}

int main()
{
    f >> n >> k;
    for(int i=1;i<=n;++i)
        f >> arr[i];
    solve();
}