Cod sursa(job #2231291)

Utilizator Ioana_GaborGabor Ioana Ioana_Gabor Data 13 august 2018 18:25:34
Problema Transport Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb

#include <iostream>
#include <fstream>

using namespace std;

int n,k,sir[16001];

int afla_nr_de_transporturi(int capacitate){
   int transport=0,rez=0;
    for(int i=1;i<=n;i++){
        if(transport+sir[i]<=capacitate){
            transport=transport+sir[i];
        }else{
            rez++;
            transport=sir[i];
        }
    }
    if(transport!=0){
        rez++;
    }
    return rez;
}

int main() {
    ifstream f("transport.in");
    ofstream g("transport.out");
    f>>n>>k;
    int maxim=0;
    for(int i=1;i<=n;i++) {
        f>>sir[i];
        if(maxim<sir[i]){
            maxim=sir[i];
        }
    }
    int stanga=maxim,dreapta=16000,mijloc,nr_transp,sol;
    while(stanga<=dreapta){
        mijloc=(stanga+dreapta)/2;
        nr_transp=afla_nr_de_transporturi(mijloc);
        if(nr_transp<=k){
            sol=mijloc;
            dreapta=mijloc-1;
        }else{
            stanga=mijloc+1;
        }
    }
    g<<sol;
    f.close();
    g.close();
}