Cod sursa(job #2146115)

Utilizator magda23245Chiperescu Magda magda23245 Data 27 februarie 2018 19:56:01
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <bits/stdc++.h>

using namespace std;

int n, k, a[16005],salmax,cammax;

void Citire()
{
    ifstream in ("transport.in");
    int i ;
    in >> n >> k;
    for ( i = 1 ; i <= n ; i++)
    {
        in>>a[i];
        if(salmax<a[i])
            salmax=a[i];
        cammax+=a[i];
    }
    in.close();
}

bool OK (int c)
{
    int i, sal, nrdr=0;
    for( i=1 ; i <=n ;)
    {
        sal=0;
        while(sal+a[i] <= c)
        {
            sal+=a[i];
            i++;
        }
        nrdr++;
    }
    return nrdr<=k;
}

void CautBin()
{
    ofstream fout ("transport.out");
    int st,dr, mij, cmin;
    st=salmax;
    dr=cammax;
    while(st<=dr)
    {
        mij= (st+dr)/2;
        if(OK(mij)==true)
        {
            cmin=mij;
            dr=mij-1;
        }
        else st=mij+1;
    }
    fout<<cmin<<"\n";
}


int main()
{
    Citire();
    CautBin();
    return 0;
}