Cod sursa(job #2296970)

Utilizator AnastasiaStefanescuAnastasia Stefanescu AnastasiaStefanescu Data 5 decembrie 2018 09:54:25
Problema Transport Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>
#include <iostream>
#include <math.h>
#include <bitset>
using namespace std;

ifstream fin ("transport.in");
ofstream fout ("transport.out");
int nr_saltele, drumuri, s[16001], i, j, cap, maxim, st, dr;

int verif(int x)
{
    int i, nr_d=1, aux = 0;
    i = 1;
    while (i <= nr_saltele)
    {
        if (aux + s[i] <= x)
            aux += s[i];
        else
        {
            aux = s[i];
            nr_d++;
        }
        i++;
    }
   if(nr_d>drumuri)
        return 2;
   return 0;
}
int main()
{
    int mijl, aux;
    fin >> nr_saltele >> drumuri;
    maxim = 0;
    for (i = 1; i<= nr_saltele; i++)
    {
        fin >> s[i];
        if(s[i] > maxim)
            maxim = s[i];
    }

    st = 1;
    dr = 256000000;
    while (st <= dr)
    {
        mijl = (st+dr)/2;
        aux = verif(mijl);
        if (aux == 2)
        {
           st=mijl+1;
        }
        else
        {
            cap=mijl;
            dr=mijl-1;
        }


    }

    fout << cap;
    return 0;
}