Cod sursa(job #2502819)

Utilizator steverino151027123456stefan steverino151027123456 Data 1 decembrie 2019 17:28:02
Problema Transport Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
#define MNK 16000
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int n, k, cmin, cmij, cmax, tempsum, trans, i, cmijt;
int v[MNK];
bool ok, okt, trk;
int main() {
    f >> n >> k;
    cmin = 0; cmax = 0;
    for(i = 0; i < n; i++) {
        f >> v[i];
        if(v[i] > cmin) cmin = v[i];
        cmax += v[i];
    }
    ok = false;
    trk = false;
    while(cmin <= cmax) {
        if(ok) cmij--;
        else cmij = (cmin + cmax) / 2;
        ok = false;
        i = 0;
        trans = 0;
        while(i < n) {
            tempsum = 0;
            while(tempsum+v[i] <= cmij && i < n) {
                tempsum += v[i];
                i++;
            }
            trans++;
        }
        if(trans == k) { ok = true; cmax = cmij - 1; }
        else if(trans < k) cmax = cmij - 1;
        else cmin = cmij + 1;
        if(!ok && okt) break;
        okt = ok;
        cmijt = cmij;
    }
    if(cmin + 1 == cmax) g << cmij + 1;
    else g << cmij;
    return 0;
}