Cod sursa(job #3296745)

Utilizator luiizzzaaaaDutu Luiza Alexandra luiizzzaaaa Data 16 mai 2025 13:12:37
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int N = 16000;
const int A = 1;
const int B = 256000000;

int t[N], nr_drumuri, n;

bool se_pot_impacheta(int capacitate)
{
    int nr_drumuri1 = 1, capacitate1=capacitate;
    for (int i = 0; i < n; i++)
    {
        if( t[i] > capacitate ) return false;

       if(capacitate1 < t[i])
         if( nr_drumuri1 < nr_drumuri )
       {
           nr_drumuri1++;
           capacitate1 = capacitate-t[i];
       }
         else return false;
       else
        {capacitate1 = capacitate1 - t[i];}
    }

        return true;
}

int main()
{
    fin >> n >> nr_drumuri;
    for (int i = 0; i < n; i++)
    {
        fin >> t[i];
    }
    int st = A, dr = B, rez = dr + 1;
    while (st <= dr)
    {
        int m = (st + dr) / 2;
        if (se_pot_impacheta(m))
        {
            rez = m;
            dr = m - 1;
        }
        else
        {
            st = m + 1;
        }
    }
    fout << rez;
    return 0;
}