Cod sursa(job #3256033)

Utilizator stefan_praleaStefan Pralea stefan_pralea Data 13 noiembrie 2024 00:15:43
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <fstream>
using namespace std;
short int v[16000];

int main(){
    ifstream fin("transport.in");
    ofstream fout("transport.out");
    int i, n, k, maxv=0, sum=0, s, d, vol, vol_candidat, nr_transporturi;

    fin >> n >> k;
    for(i=0;i<n;i++){
        fin >> v[i];
        sum += v[i];
        if(v[i] > maxv)
            maxv = v[i];
    }

    s = maxv;
    d = sum;
    while(s<=d){
        vol_candidat = (s+d)/2;
        sum = 0;
        nr_transporturi = 1;
        for(i=0; i<n; i++){
            sum += v[i];
            if(sum > vol_candidat){
                sum=v[i];
                nr_transporturi++;
            }
        }

        if(nr_transporturi > k)
            s = vol_candidat+1;
        else{
            vol = vol_candidat;
            d = vol_candidat-1;
        }
    }
    fout << vol << endl;
}