Cod sursa(job #1026746)

Utilizator uagamagaMatei Rogoz uagamaga Data 11 noiembrie 2013 22:07:47
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>

using namespace std;

ifstream fin("transport.in");
ofstream fout("transport.out");

int n,k;
int *v = new int[16001];
int last;
bool transports(int quant)
{
    int i,ctr=0,temp=0;
    for(i=0;i<n;i++)
    {
        if(temp+v[i]<=quant)
            temp+=v[i];
        else
        {
            temp = 0;
            ctr++;
            i--;
        }
        if(i==n-1) ctr++;
        if(ctr>k) return false;

    }
    return true;

}
int find_min(int low,int high)
{

    int piv = (low+high)/2;
    if(high==low) return last;
    if(transports(piv))
    {
        last = piv;
        return find_min(low,piv);
    }
    else
        return find_min(piv+1,high);

}

int main()
{
    int i,max=0,s=0;
    fin>>n>>k;

    for(i=0;i<n;i++)
    {
        fin>>v[i];
        s+=v[i];
        if(v[i]>max) max=v[i];
    }

    fout<<find_min(max,s);

    return 0;
}