Cod sursa(job #3341565)

Utilizator GabrielaBellaMircea Gabriela GabrielaBella Data 19 februarie 2026 23:25:31
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>

using namespace std;

ifstream cin("transport.in");
ofstream cout("transport.out");

int v[16001];

int convine(int x, int n, int nrmax, int v[])
{
    int sumatemp=0, cnt=0;
    for (int i=1; i<=n; i++) {
        if (v[i]>x) return false;

        if (sumatemp+v[i]<=x) {
            sumatemp+=v[i];
        }
        else {
            cnt++;
            sumatemp=v[i];
        }
    }
    if (sumatemp<=x) cnt++;
    if (cnt<=nrmax) return true;
    return false;
}

int main()
{
    int n, nrmax, suma=0;
    cin >> n >> nrmax;
    for (int i=1; i<=n; i++) {
        cin >> v[i];
        suma+=v[i];
    }
    int rasp=0;
    for (int i=(1 << 28); i>=1; i/=2) {
        if (convine(rasp+i, n, nrmax, v)==false) {
            rasp+=i;
        }
    }
    cout << rasp+1;
    return 0;
}