Cod sursa(job #2924555)

Utilizator magicninjaJula Diana magicninja Data 4 octombrie 2022 22:47:06
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int v[16005];
int main()
{
    int i, n, k, valmaxima = 0, suma = 0, st, dr, sol = -1, mij, drum;
    in >> n >> k;
    for(i = 0; i < n; i++){
        in >> v[i];
        if(v[i] > valmaxima){
            valmaxima = v[i];
        }
        suma += v[i];
    }
    st = valmaxima;
    dr = suma;
    while(st <= dr){
        mij = (st + dr) / 2;
        suma = 0;
        drum = 0;
        for(i = 0; i < n; i++){
            suma += v[i];
            if(suma + v[i + 1] > mij){
                drum++;
                suma = 0;
            }
        }
        if(suma != 0){
            drum++;
        }
     //   cout << st << " " << dr << " " <<  mij << " " << drum;
        if(drum > k){
            st = mij + 1;
        }
        else{
            dr = mij - 1;
            sol = mij;
        }
    }
    out << sol;
    return 0;
}