Cod sursa(job #2255528)

Utilizator DragosSDragos Sarbu DragosS Data 7 octombrie 2018 11:16:41
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>
#include <stack>
#include <math.h>

using namespace std;

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

stack<int> s;
int n;
int k;

int transport(int val)
{
    int cnt;
    stack<int> copy_stack;
    copy_stack=s;
    int copy_k=0;
    int stack_size = copy_stack.size();
    while(copy_k<k && stack_size>0)
    {
        cnt=0;
        while(cnt+copy_stack.top()<= val && stack_size>0)
        {
            cnt+=copy_stack.top();
            copy_stack.pop();
            stack_size--;
        }

        copy_k++;
    }
    return (copy_k<k);
}

int transport_binary_search(int start,int i)
{
    if(i==0)
        return start;
    else if(transport(start+pow(2,i)))
        return transport_binary_search(start,i-1);
    else
        return transport_binary_search(pow(2,i),i-1);
}

int main()
{
    f>>n;
    f>>k;
    for(int i=0;i<n;i++)
    {
        int nr;
        f>>nr;
        s.push(nr);
    }

    g<<transport_binary_search(0,27);

}