Cod sursa(job #2633032)

Utilizator Dragono63Stanciu Rares Stefan Dragono63 Data 6 iulie 2020 12:31:19
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.58 kb
#include <bits/stdc++.h>

using namespace std;
/***********************************************/
ifstream f("transport.in");
ofstream g("transport.out");
/***********************************************/
const int nmax = 16069;
int n , k;
int v[nmax];
int maxt , rasp;
/***********************************************/
///-----------------------------------------------------------
inline void readInput()
{
    f>>n>>k;
    for(int i=1 ; i<=n; ++i)
    {
       f>>v[i];
       if(maxt < v[i]) maxt = v[i];
    }
}
///-----------------------------------------------------------
bool verificare(int cont )
{
    int kc = 0;
    int s = 0;
    for(int i = 1;i<= n; i++)
    {
        if(s+v[i]<= cont) s+=v[i];
        else{
          kc++;
          s=v[i];
        }
        if(kc==k ) return false;
    }
    return true;
}
///-----------------------------------------------------------
void cautareBinara(int st , int dr )
{
    while(dr >= st)
    {
        int mij = st + (dr-st)/2;
        if(verificare(mij) == true)
        {
            rasp = mij;
            dr = mij - 1;
        }
        else
        {
            st = mij + 1;
        }
    }
    return;
}
///-----------------------------------------------------------
inline void Solution()
{
    cautareBinara(maxt , 16000 * 16000);
}
///-----------------------------------------------------------
inline void Afisare()
{
    g<<rasp;
}
///-----------------------------------------------------------
int main()
{
    readInput();
    Solution();
    Afisare();
    return 0;
}