Cod sursa(job #3229499)

Utilizator sergioneUngureanu Sergiu sergione Data 16 mai 2024 10:57:03
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <bits/stdc++.h>
#define int long long

using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");

int v[17000];
int n, k, maxi = 0, sum = 0, rez;

bool valid(int mij)
{
    int cont = 1, sum = v[0];
    for(int i = 1; i < n; i++)
    {
        if(sum + v[i] > mij)
        {
            cont++;
            sum = v[i];
        }
        else
            sum += v[i];
    }
    if(cont > k)
        return 0;
    return 1;
}
signed main()
{
    in>>n>>k;
    for(int i = 0; i < n; i++)
    {
        in>>v[i];
        maxi = max(maxi, v[i]);
        sum += v[i];
    }
    int low = maxi;
    int high = sum;
    while(low <= high)
    {
        int mij = (low + high) / 2;
        if(valid(mij))
        {
            rez = mij;
            high = mij - 1;
        }
        else
        {
            low = mij + 1;
        }
    }
    out<<rez;
}