Cod sursa(job #2517675)

Utilizator Botzki17Botocan Cristian-Alexandru Botzki17 Data 3 ianuarie 2020 22:35:30
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>

using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
const int NMAX = 16000;
const int CMAX = 16000 * 16000;
int v[NMAX+5];
int k, n;

bool verf(int c)
{
    int cnt =0;
    int camion =0;
    for(int i =1;i<=n;i++)
    {
        if(v[i] > c)
            return 0;
        if(camion + v[i] <= c)
            camion = camion+v[i];
        else
        {
            cnt ++;
            camion = v[i];
        }

    }
    cnt++;
    if(cnt <=k)
        return 1;
    else
        return 0;
}

int main()
{
    int i, st, dr, mid, sol;
    fin>>n>>k;
    for(i=1;i<=n;i++)
        fin>>v[i];
    st = 1;
    dr = CMAX;
    while(st<=dr)
    {
        mid = (st + dr)>>1;
        if(verf(mid) == 1)
        {
            sol = mid;
            dr = mid - 1;
            continue;
        }
        else
            st = mid + 1;
    }
    fout<<sol<<"\n";
    return 0;
}