Cod sursa(job #2561644)

Utilizator George1Simion George George1 Data 29 februarie 2020 00:56:17
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <fstream>

using namespace std;

int mij,n,k,a[16021],p=0;

ifstream f("transport.in");
ofstream g("transport.out");

int verif(int y)
{
    int drum=1,tr=0,i;
    for (i=1;i<=n && drum<=k;i++)
    {
        tr=tr+a[i];
        if (tr>y)
        {
            tr=a[i];
            drum++;
        }
    }
    if (drum<=k) return 1;
    else return 0;
}

void caut_bin(int st, int dr)
{
    while (st<=dr)
    {
        mij=(st+dr)/2;

        if (verif(mij)==1)
        {
            p=mij;
            dr=mij-1;
        }
        else
        {
            st=mij+1;
        }
    }
}

int main ()
{
    int mx=0,s=0,i;
    f>>n>>k;

    for (i=1;i<=n;i++)
    {
        f>>a[i];
        s=s+a[i];

        if (a[i]>mx)
        {
            mx=a[i];
        }
    }

    caut_bin(mx,s);
    g<<p;
}