Cod sursa(job #1247019)

Utilizator sherban26FMI Mateescu Serban-Corneliu sherban26 Data 21 octombrie 2014 22:44:48
Problema Transport Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <fstream>
#include <iostream>

using namespace std;

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

int n, k, stiva[16005];

int greedy(unsigned int g)
{
    int kfals = k;
    unsigned int x;

    for (int i = 0; i < n; i++)
    {
        x += stiva[i];
        if (x >= g)
        {
            kfals--;
            x = stiva[i];
        }
    }
    if (kfals >= 0)
        return 1;
    else
        return 0;
}

void caut(unsigned int st, unsigned int dr)
{cout << st << " " << dr << "\n";
    if (st <= dr)
    {
        unsigned int mij = (st + dr) / 2;
        if (st == dr)
        {
            g << st;
        }
        else if (greedy(mij))
        {
            caut(st, mij - 1);
        }
        else
        {
            caut(mij + 1, dr);
        }
    }
    else
    {
        g << st;
    }
}

int main()
{
    unsigned int st = 0, dr = 0;

    f >> n >> k;

    for (int i = 0; i < n; i++)
    {
        f >> stiva[i];
        if (stiva[i] > st)
            st = stiva[i];
        dr += stiva[i];
    }

    caut(st, dr);

    return 0;
}