Cod sursa(job #2310652)

Utilizator GiihuoTihufiNeacsu Stefan GiihuoTihufi Data 1 ianuarie 2019 19:40:26
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <bits/stdc++.h>

#define C(i) Condition(i)

using namespace std;

ifstream f("transport.in");
ofstream g("transport.out");

int N,K,V[16000];

bool Condition(int x)
{
    int s1=0,i=0,nr=0;
    bool result=true;
    while(i<N && nr<=K)
    {
        s1=0;
        while(s1+V[i]<=x && i<N) s1+=V[i],i++;
        nr++;
        if(nr>K) result=false;
    }
    return result;
}

int BinSearch(int l,int r)
{
    int m=(l+r)/2;
    if(C(m) && !C(m-1)) return m;
    else
    {
        if(C(m-1)) return BinSearch(l,m-1);
        if(!C(m))  return BinSearch(m+1,r);
    }
    return m;
}

int main()
{
    f>>N>>K;
    int Max=0,S=0;
    for(int i=0;i<N;i++)
    {
        f>>V[i];
        Max=max(Max,V[i]);
        S+=V[i];
    }
    g<<BinSearch(Max,S);

    f.close(); g.close();
    return 0;
}