Cod sursa(job #2308290)

Utilizator lilianaursacheLiliana Ursache lilianaursache Data 26 decembrie 2018 19:42:06
Problema Transport Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
using namespace std;

ifstream f("transport.in"); ///kruskal
ofstream g("transport.out");
int n,k,v[16000],i,maxi;

int nr_transp(int c) {
    int nt=0, i=1, cc=c;
    for (i=1; i<=n; )
        if (v[i]<=cc) cc-=v[i], i++;
        else nt++, cc=c;
    return nt+1;
}

int cb(int k) { ///capacitatea minima m pt a face maxim k transporturi
    int s=maxi, d=1000000000, m, pos, nt;
    while(s<=d) {
        m = s +(d-s)/2;
        nt=nr_transp(m); /// nr transp la capacitatea m
        if (nt==k) pos=m, d = m-1;
        else if(nt>k) s=m+1;
        else d=m-1;
    }
    return pos;
}

int main()
{
    f>>n>>k;
    for (i=1; i<=n; i++) {
        f>>v[i];
        if (v[i]>maxi) maxi=v[i];
    }
    //g<<nr_transp(6);
    g<<cb(k);
    return 0;
}