Cod sursa(job #2192417)

Utilizator mrhammerCiocan Cosmin mrhammer Data 5 aprilie 2018 21:46:30
Problema Transport Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n,k;
int max_nr;
int total_s;
vector<int> v;
int transports(int c)
{
    int act_c = c;
    int t = 1;
    for(int i=0;i<n;i++)
    {
        if(act_c - v[i] < 0)
        {
            t++;
            act_c = c;
        }
        if(act_c - v[i] >= 0) act_c -= v[i];
    }
    return t;
}
int bin_s(int l,int r,int k)
{
    int min_cap = 16001;
    while(l <= r)
    {
        int mid = l+(r-l)/2;
        int tr = transports(mid);
        if(tr <= k) min_cap = min(min_cap,mid);
        if(k < tr) l = mid + 1;
        else r = mid - 1;
    }
    return min_cap;
}
int main()
{
    max_nr = -1;
    total_s = 0;
    fin>>n>>k;
    int nr;
    for(int i=0;i<n;i++)
    {
        fin>>nr;
        total_s += nr;
        max_nr = max(nr,max_nr);
        v.push_back(nr);
    }
    fout<<bin_s(max_nr,total_s,k);
}