Cod sursa(job #2218642)

Utilizator SmitOanea Smit Andrei Smit Data 5 iulie 2018 11:47:50
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream>
#include <iostream>
using namespace std;


int a[16000], k, n, smax, vmax;

void citire()
{
    ifstream f("transport.in");
    f>>n>>k;

    for(int i=0;i<n;i++)
    {
        f>>a[i];
        vmax = (vmax > a[i])? vmax:a[i];
        smax += a[i];
    }
}

bool OK(int C)
{
    int nrtrans,s,i;

    s=0;
    i=0;
    nrtrans=0;
    while(i<n)
    {
        while(i<n && s + a[i] <=C)
        {
            s+=a[i];
            i++;
        }
        s=0;
        nrtrans++;
    }


    if(nrtrans<=k)
        return true;
    return false;
}

void rez()
{
    int sol;
    ofstream g("transport.out");
    int st = vmax, dr = smax, mijl;
    while(st <= dr)
    {
        mijl = (st + dr)/2;
        if( OK(mijl) == 1)
        {
            sol = mijl;
            dr = mijl - 1;
        }
        else
            st = mijl + 1;

    }
    g<<sol;
}

int main()
{
    citire();
    rez();
    return 0;
}