Cod sursa(job #1229618)

Utilizator radu_cebotariRadu Cebotari radu_cebotari Data 17 septembrie 2014 20:19:13
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include<fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");

int n,k,v[20000],sol,maxim;

int nr_transport(int capacitate)
{

    int suma = 0,i = 1,sol = 0;
    while(i <= n )
    {

        if(suma + v[i] > capacitate)
        {
            sol++;
            suma = v[i];
        }
        else{
            suma+=v[i];
        }
        i++;
    }
    sol++;
    return sol;
}

void bin_search(int left,int right,int val)
{

    int mid,now;
    while(left <= right)
    {

        mid = (left+right)/2;
        now = nr_transport(mid);
        if(now <= val){
            right = mid -1;
            sol = mid;
        }
        else
            left = mid +1 ;
    }
}

int main()
{

    in>>n>>k;
    int s = 0;
    for(int i = 1 ; i <= n ; i++){
        in>>v[i];
        s+= v[i];
        maxim = max(maxim,v[i]);
    }
    bin_search(maxim,s,k);
    out<<sol;
    in.close();
    out.close();
    return 0;
}