Cod sursa(job #2924551)

Utilizator Thomas_Paturan114Paturan Thomas Thomas_Paturan114 Data 4 octombrie 2022 22:01:17
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int v[16005];
int main()
{
    int n, k, maxim = -1, sum = 0, st, dr, sol, mij, k_2 = 0, transport = 0;
    in>>n>>k;
    for(int i = 1; i<=n; i++)
    {
        in>>v[i];
        sum += v[i];
        if(v[i] > maxim)
        {
            maxim = v[i];
        }
    }
    st = maxim;
    dr = sum;
    sol = -1;
    sum = 0;
    while(st <= dr)
    {
        transport = 0;
        mij = (st+dr)/2;
        int i = 1;
        while(i != n+1)
        {
            sum+=v[i];
            if(sum > mij)
            {
                i--;
                transport++;
                sum = 0;
            }
            i++;
        }
        if(sum != 0)
        {
            transport++;
            sum = 0;
        }
        if(transport > k)
        {
            st = mij + 1;
        }
        else
        {
            sol = mij;
            dr = mij - 1;
        }
    }
    out<<sol;

}