Cod sursa(job #2132484)

Utilizator ioanaa_ghGhiorghi Ioana-Cristina ioanaa_gh Data 15 februarie 2018 20:00:21
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("transport.in");
ofstream fout ("transport.out");
int a[16005] , n , k;
int Check(int val)
{
    int nrsecv , s;
    nrsecv = 1;
    s = 0;
    for(int i = 1 ; i <= n ; i++)
    {
        if(a[i] > val)
            return 0;
        s += a[i];
        if(s > val)
        {
            nrsecv++;
            s = a[i];
        }
    }
    return (nrsecv <= k);
}
int main()
{
    int stg = 1 , drp = 16005 * 16005 , mij , poz = 0;
    fin >> n >> k;
    for(int i = 1 ; i <= n ; i++)
        fin >> a[i];
    while(stg <= drp)
    {
        mij = (stg + drp) / 2;
        if(Check(mij))
        {
            poz = mij;
            drp = mij - 1;
        }
        else stg = mij + 1;
    }
    fout << poz << "\n";
    fin.close();
    fout.close();
    return 0;
}