Cod sursa(job #2635384)

Utilizator nicolaee2Martinescu Nicolae nicolaee2 Data 14 iulie 2020 12:25:40
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <iostream>
#include<bits/stdc++.h>
using namespace std;

#define NMAX 100005

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

int v[NMAX];
int n,k;

long long f(long long x)
{
    long long sum = 0;
    int idx = 1;
    for(int i = 1;i<=k && idx <= n;i++)
    {
        sum = 0;
        while(idx <= n && sum + v[idx] <= x)
        {
            sum += v[idx];
            idx++;
        }
    }

    if(idx == n + 1)
        return 1;
    return 0;

}

int main()
{
    fin>>n>>k;
    for(int i = 1;i<=n;i++)
        fin>>v[i];

    int st = 1;
    int dr = 256000000;
    int sol = -1;

    while(st<=dr)
    {
        int m = (st+dr)/2;
        int rez = f(m);
        if(rez)
        {
            sol = m;
            dr = m - 1;
        }
        else
        {
            st = m + 1;
        }
    }
    fout<<sol;


    return 0;
}