Cod sursa(job #2082772)

Utilizator anamariazidaruZidaru Ana-Maria anamariazidaru Data 6 decembrie 2017 19:26:26
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f ("transport.in");
ofstream g ("transport.out");

const int N=16002;

int st[N], i, n, k;

bool camion (int x)
{
    //verifica daca cel mult k transporturi efectuate cu un camion de capacitate c pot incarca toate saltelele
    int cc=x, nr=1;
    for (i=0; i<n; i++)
    {
        if (st[i]>x)
        {
            return false;
        }
        if (st[i]>cc)
        {
            nr++;
            cc=x;
        }
        cc-=st[i];
        if (nr>k)
        {
            return false;
        }
    }
    return true;
}

int main()
{
    int r, pas;
    f>>n>>k;
    r=0;
    pas = 1<<27;
    for (i=0; i<n; i++)
    {
        f>>st[i];
    }
    while (pas!=0)
    {
        if (!camion(r+pas))
        {
            r+=pas;
        }
        pas/=2;
    }
    r++;
    g<<r;
    return 0;
}