Cod sursa(job #3259504)

Utilizator marctudor_ghenceaMarc-Tudor Ghencea marctudor_ghencea Data 26 noiembrie 2024 17:52:02
Problema Transport Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>

using namespace std;

ifstream cin("transport.in");
ofstream cout("transport.out");

int v[16001];
int s[16001];
int n, k;

int drumuri(int mijl)
{
    int i = 1;
    int cnt = 0;
    while(i <= n){
        int sum = 0;
        while(sum + v[i] <= mijl && i <= n){
            sum += v[i];
            i++;
        }
        cnt++;
    }
    return cnt;
}

int main()
{
    cin >> n >> k;
    int maxi = -1;
    for(int i = 1; i <= n; i++){
        cin >> v[i];
        s[i] = s[i-1] + v[i];
        if(v[i] > maxi){
            maxi = v[i];
        }
    }
    int st = maxi;
    int dr = 16000;
    int sol = -1;
    while(st <= dr){
        int mijl = (st+dr)/2;
        int drum = drumuri(mijl);
        if(drum <= k){
            sol = mijl;
            dr = mijl - 1;
        }
        else{
            st = mijl + 1;
        }
    }
    cout << sol;
}