Cod sursa(job #2695786)

Utilizator C_R_I_S_T_I_2_3Cristi Gavrila C_R_I_S_T_I_2_3 Data 14 ianuarie 2021 15:10:53
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <bits/stdc++.h>

using namespace std;

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

int n, k, maxim, suma;
int v[16005];

bool Verificare(int x)
{
    //verifica daca camionul cu capacitate x poate duce toate saltelele in k transporturi;
    int capacitate=0, transporturi=1;
    for(int i=1; i<=n; i++)
    {
        if(capacitate+v[i]<=x)
            capacitate+=v[i];
        else
            transporturi++, capacitate=v[i];
    }
    if(transporturi<=k)
        return 1;
    else
        return 0;
}
int main()
{
    fin >> n >> k;
    for(int i=1; i<=n; i++)
        fin >> v[i], maxim=max(maxim, v[i]), suma+=v[i];
    int st=maxim, dr=suma, sol=0;
        while(st<=dr)
        {
            int mij=(st+dr)/2;
            if(Verificare(mij))
                sol=mij, dr=mij-1;
            else
                st=mij+1;
        }
    fout << sol;
    return 0;
}