Cod sursa(job #2059675)

Utilizator asztalos.l.danielA. B. Daniel asztalos.l.daniel Data 7 noiembrie 2017 13:22:46
Problema Transport Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <fstream>
#include <stdlib.h>

using namespace std;

int maxim;

int belefer(int* a,int k,int n,int c){
    int sum=0,j=1;
    for(int i=0;i<n;i++){
        if(sum+a[i]>c){
            sum=a[i];
            j++;
        }
        else sum+=a[i];
    }
    return j;
}

int binaris(long long e,long long v,int* a, int k, int n){
    if(e>v){
        return 0;
    }
    else{
        int mid=(e+v)/2;
        int l=belefer(a,k,n,mid);
        if(l==k){
            return mid;
        }
        else{
            if(l>k) return binaris(mid,v,a,k,n);
            else return binaris(e,mid,a,k,n);
        }
    }
}

int main()
{
    ifstream f("transport.in");
    ofstream g("transport.out");
    int*a;
    int n,k;
    long long b=256000000;
    f>>n>>k;
    a=(int*)calloc(n,sizeof(int));
    maxim=-1;
    for(int i=0;i<n;i++){
        f>>a[i];
        if(a[i]>maxim){
            maxim=a[i];
        }
    }
    g<<binaris(maxim,b,a,k,n);
    free(a);
    return 0;
}