Cod sursa(job #2082128)

Utilizator robertispasIspas Robert robertispas Data 5 decembrie 2017 18:56:11
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>

using namespace std;

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

const int N = 16001;
int n, k, vmax=-1, svmax;
int v[N];

bool sepoate(int x)
{
    int s = 0, nr = 0;
    for(int i = 1; i <= n; i++)
    {
        if(s + v[i] <= x) s += v[i];
        else{
            s = v[i];
            nr++;
        }
    }
    if(nr < k) return true;
    else return false;
}

int main()
{
    in>>n>>k;
    for(int i = 1; i <= n; i++)
    {
        in>>v[i];
        svmax += v[i];
        vmax = max(vmax, v[i]);
    }
    int c1 = vmax, c2 = svmax, mij, rez;
    while(c1 <= c2)
    {
        mij = (c1+c2)/2;
        if(sepoate(mij))
        {
            rez = mij;
            c2 = mij - 1;
        }
        else
        {
            c1 = mij+1;
        }
    }
    out<<rez;
    return 0;
}