Cod sursa(job #3254110)

Utilizator Neagu_IoanIoan Neagu Neagu_Ioan Data 6 noiembrie 2024 09:30:03
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <iostream>
#include <fstream>

using namespace std;

int v[16001];

int main()
{
    ifstream in("transport.in");
    ofstream out("transport.out");
    int n,k,dr=0,st=0, mij, capacitate, sum=0, cnt=1, i;
    in>>n>>k;
    for (int i=0; i<n; i++){
        in>>v[i];
        dr=dr+v[i];
        if (v[i]>st)st=v[i];
    }
    v[n]=0;
    while ( st <= dr ){
        mij = ( st+dr ) / 2;
        sum = 0;
        cnt = 1;
        for (i=0; i<n; i++){
            if (sum+v[i]<=mij)
                sum+=v[i];
            else{
                sum=v[i];
                cnt++;
            }
        }
        if (cnt<=k){
            capacitate=mij;
            dr=mij-1;
        }
        else
            st=mij+1;
    }
    out<<capacitate;
    return 0;
}