Cod sursa(job #1894546)

Utilizator luanastLuana Strimbeanu luanast Data 26 februarie 2017 22:22:39
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
#include <algorithm>
using namespace std;

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

int n, i, j, mid, s, sol, st, dr, sum, c, maxim, k;
int v[16001];

int main()
{
    fin >> n >> k;
    for(i = 1; i <= n; i++){
        fin >> v[i];
        if(v[i] > maxim)
            maxim = v[i];
        s += v[i];
    }

    st = maxim;
    dr = s;
    while(st <= dr){
        c = (st + dr)/2;
        sum = 0;
        sol = 0;
        for(i = 1; i <= n; i++){
            sum += v[i];
            if(sum >= c){
                sum = v[i];
                ++sol;
            }
        }


        if(sol == k){
            fout << c;
            break;
        }
        if(sol >= k)
            st = c + 1;
        else
            dr = c - 1;
    }


    return 0;
}