Cod sursa(job #2211957)

Utilizator Paul_BalanPavel Balan Paul_Balan Data 12 iunie 2018 16:58:44
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <bits/stdc++.h>

using namespace std;

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

int n,p,f,a[16100];

int main()
{
    int dr = 0,st = 0;
    in >> n >> p;
    for(int i=1; i<=n; i++){
        in >> a[i];
        st = max(st,a[i]);
        dr += a[i];
    }
    while(st<=dr){
        int m = (st+dr)/2;
        int q = 1;
        int sum = 0;
        for(int i=1; i<=n; i++){
            if(sum+a[i] > m){
                q++;
                sum = a[i];
            }
            else sum+=a[i];
            }
            if(q>p){
                st = m+1;
            }
            else{
                f = m;
                dr = m-1;
            }
    }
    out << f;
    return 0;
}