Cod sursa(job #3237444)

Utilizator amalia123456amalia amalia123456 Data 9 iulie 2024 09:49:27
Problema Transport Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <iostream>
#include <fstream>
#define DMAX 16005
using namespace std;

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

int v[DMAX], n;

int drum(int capacitate);

int main()
{
    int i, m, maxx = 0, sum = 0;

    fin >> n >> m;
    for(i = 0; i < n; i++)
        {
            fin >> v[i];
            if(v[i] > maxx)
                maxx = v[i];
            sum += v[i];
        }

    int st = maxx, dr = sum;
    while(dr - st > 1)
    {
        int mij = (st + dr) / 2;

        if(m >= drum(mij))
            dr = mij;
            else
                st = mij;
    }
    fout << dr;
    return 0;
}
int drum(int capacitate)
{
    /// 7 + 24 = 31 / 2 = 15
    int nr = 1, sum = 0, i;
    for(i = 0; i < n; i++)
    {
        if(sum + v[i] <= capacitate)
            sum += v[i];
            else
                nr ++, sum = v[i];
    }
    return nr;
}