Cod sursa(job #1045490)

Utilizator BionicMushroomFMI - Dumitrescu Tiberiu Alexandru BionicMushroom Data 1 decembrie 2013 17:38:52
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include<fstream>
using namespace std;
 
short n, k, *v;
 
bool depaseste (int capacitate)
{
    int sum = 0;
	short drumuri = 1;
    for (short i = 0; i < n; i++)
    {   
        sum += v[i];
        if (sum  > capacitate)
        {
            sum = v[i];
            drumuri++;
            if (drumuri > k)
                return true;
        }
    }
    return false;
}
 
int main()
{
    int lim_s, lim_d, step;
    ifstream f ("transport.in");
    f >> n >> k;
    v = new short[n];
    f >> v[0];
    lim_s = lim_d = v[0];
    for (short i = 1; i < n; i++)
    {
        f >> v[i];
        lim_d += v[i];
        if (lim_s < v[i])
            lim_s = v[i];
    }
    f.close();
    for (step = 1; step < lim_d; step <<= 1);
    for ( ; step; step >>= 1)
        if (lim_s + step < lim_d && depaseste(lim_s + step))
            lim_s += step;
    ofstream g ("transport.out");
    if (!depaseste(lim_s))
        g << lim_s;
    else
        g << lim_s + 1;
    g.close();
    return 0;
}