Cod sursa(job #1229585)

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

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

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;
    for(int i = 1 ; i <= n ; i++)
        in>>v[i];
    bin_search(1,500000000,k);
    out<<sol;
    in.close();
    out.close();
    return 0;
}