Cod sursa(job #1453328)

Utilizator MDianaMarusic Diana MDiana Data 23 iunie 2015 11:45:18
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <iostream>
#include <fstream>
#include <math.h>

using namespace std;

ifstream fin("transport.in");
ofstream fout("transport.out");

int n, k, sum, minim;
int A[17000];



void Alg(int l, int h){
    int m, sum = 0;
    if(l >= h)
        fout << l;
    else{
        m = (l+h)/2;
        int res = 1;
        for(int  i = 0; i<n; i++){
            sum+=A[i];
            if(sum > m){
                res++;
                sum = A[i];
            }
            else
            if(i == n)
                res++;
        }
        if(res <= k)
            Alg(l, m);
        else
            Alg(m+1, h);

    }
}

int main(){
    minim = 32000;
    fin >> n >> k;
    sum = 0;
    for(int i = 0; i < n; i++ ){
        fin >> A[i];
        sum += A[i];
    }
    Alg(ceil(sum/k), sum);
    return 0;
}