Cod sursa(job #2845057)

Utilizator rares89_Dumitriu Rares rares89_ Data 7 februarie 2022 13:04:34
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>
 
using namespace std;
 
ifstream fin("transport.in");
ofstream fout("transport.out");
 
int n, k, v[16005], st, dr, rezultat;
 
int transporturi(int C) {
    int cnt = 1, size = 0; // minim 1 transport
    for(int i = 1; i <= n; i++) {
        if(size + v[i] <= C) {
            size += v[i];
        } else {
            cnt++;
            size = v[i];
        }
    }
    return cnt;
}
 
int main() {
    fin >> n >> k;
    for(int i = 1; i <= n; i++) {
        fin >> v[i];
        dr += v[i];
        st = max(st, v[i]);
    }
    while(st <= dr) {
        int mid = (st + dr) / 2;
        if(transporturi(mid) <= k) {
            rezultat = mid;
            dr = mid - 1;
        } else {
            st = mid + 1;
        }
    }
    fout << rezultat;
    return 0;
}