Cod sursa(job #2895023)

Utilizator bogdan2405Strat Bogdan-Valentin bogdan2405 Data 28 aprilie 2022 18:20:34
Problema Transport Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <bits/stdc++.h>

using namespace std;

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

vector<int> v;
int k;

bool solve(int x){
    int transport=1;
    int s=0;
    for(int i=0;i<v.size();++i){
        if(s+v[i]<=x){
            s= s + v[i];
        }
        else{
            s=0;
            transport++;
            --i;
        }
    }

    return transport<=k;
}

int binarySearch(int left, int right){
    if(left>right)
        return -1;
        
    else{
        int mid =  (left+right)/2;
        if (solve(mid) ==true && solve(mid-1) == false){
            return mid;
        }
        else if(solve(mid) ==false)
            return binarySearch(mid+1,right);
        else
            return binarySearch(left,mid-1);
    }
}

int main() {
    int n,i,a;
    
    f>>n>>k;
    int maxi=0,sum=0;
    for(i=0;i<n;++i){
        f>>a;
        sum += a;
        maxi=max(maxi,a);
        v.push_back(a);
    }
    g<<binarySearch(maxi,sum);
    return 0;
}