Cod sursa(job #2289873)

Utilizator CristyXtremeSimion Cristian CristyXtreme Data 25 noiembrie 2018 14:15:28
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <stdio.h>

using namespace std;

int nr_trans(int *v, int n, int capacitate) {
    int numar_transporturi = 0, suma;
    for (int i = 0; i < n;) {
        suma = 0;
        if (v[i] > capacitate)
            return 16001;
        while (suma + v[i] <= capacitate && i < n) {
            suma += v[i];
            i++;
        }
        numar_transporturi++;
    }
    return numar_transporturi;
}

int caut(int *v, int n, int k) {
    int pos = 1 << 30, i;
    for (i = (1 << 30) - 1; pos; pos >>= 1)
        if (i - pos >= 0 && nr_trans(v, n, i - pos) <= k)
            i -= pos;
    return i;
}

int main()
{
    freopen("transport.in", "r", stdin);
    freopen("transport.out", "w", stdout);
    int n, k, v[16000];
    scanf("%d %d", &n, &k);
    for (int i = 0; i < n; i++)
        scanf("%d", &v[i]);
    printf("%d", caut(v, n, k));
    return 0;
}