Cod sursa(job #2502685)

Utilizator Teodora1314Teodora Oancea-Negoita Teodora1314 Data 1 decembrie 2019 13:53:38
Problema Transport Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.23 kb
//#include <iostream>
#include <fstream>
using namespace std;
int a[16001],n,k,mij,p=0;

ifstream cin("transport.in");
ofstream cout("transport.out");

int verif(int y)
{
    int tr,drum,i;
    tr=0;
    drum=1;
    for(i=0; 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,sum=0,lim,i,nr,maxi=0;
    cin>>n>>k;
    for(i=1; i<=n; i++)
    {
        cin>>a[i];
        s=s+a[i];
        if(a[i]>mx)
            mx=a[i];
    }
    caut_bin(0,s);
    cout<<p;
    /*nr=s/k;
    if(nr>mx)
        lim=nr;
    else lim=mx;
    i=1;
    while(tr<=k)
    {
        sum=0;
        while(i<=n &&sum<lim)
        {
            sum=a[i]+sum;
            i++;
        }
        if(sum>maxi)
            maxi=sum;
        tr++;
        // cout<<sum<<'\n';
    }
    //cout<<maxi;*/
    return 0;
}