Cod sursa(job #2261946)

Utilizator bojemoiRadu Mamaliga bojemoi Data 16 octombrie 2018 20:33:40
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <fstream>
#define ci 300000000
using namespace std;

ifstream fin("transport.in");
ofstream fout("transport.out");

int n, k, a[16009];
long  long c;

bool valid(long long j){
    int w = 1;
    long long loc = j;
    bool mte = false;
    for(int i = 1; i<=n; ++i){
        if(a[i] <=loc){
            loc-=a[i];
        }
        else{
            ++w;
            if(w>k){
                mte = true;
                break;
            }
            loc = j;
            --i;
        }
    }
    if(mte == true) return false;
    return true;
}

long long capacitate(long long l, long long r){
    if(l >=r-7){
        for(long long i = l; i<=r; ++i){
            if(valid(i)) return i;
        }
    }
    else{
        long long mid = (l+r)/2;
        if(valid(mid)) return capacitate(l, mid);
        else return capacitate(mid+1, r);
    }
}


int main()
{
        fin>>n>>k;

        for(int i = 1; i<=n; ++i) fin>>a[i];


        fout<<capacitate(0,ci);

     //   for(int i = 1; i<=20; ++i){
       //     fout<<valid(i)<<'\n';
       // }/








    return 0;
}