Cod sursa(job #1760453)

Utilizator mateigabriel99Matei Gabriel mateigabriel99 Data 20 septembrie 2016 20:27:05
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("transport.in");
ofstream fout("transport.out");

int n,k;
int x[16005];
int s,suma,Max;
int st,dr,m,nr;

int main()
{
    fin>>n>>k;

    for(int i=1; i<=n; i++)
        fin>>x[i], suma+=x[i], Max=max(Max,x[i]);

    st=Max;
    dr=suma;

    while(dr>st)
    {
        nr=0; s=0;
        m=(st+dr)/2;

        for(int i=1; i<=n; i++)
            if(x[i]+s<=m)
                s+=x[i];
            else
                s=x[i], nr++;

        if(nr<k) dr=m-1;
        else      st=m+1;
    }

    fout<<st;

    return 0;
}