Cod sursa(job #2065151)

Utilizator asztalos.l.danielA. B. Daniel asztalos.l.daniel Data 13 noiembrie 2017 15:12:42
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>
#include <stdlib.h>

using namespace std;

int maxim,poz;

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;
}

void binaris(long long e,long long v,int* a, int k, int n){
    if(e>v){

    }
    else{
        int mid=(e+v)/2;
        int l=belefer(a,k,n,mid),c;
        if(l<=k){
            poz=mid;
            binaris(e,mid-1,a,k,n);
        }
        else{
            binaris(mid+1,v,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];
        }
    }
    binaris(maxim,b,a,k,n);
    g<<poz;
    free(a);
    f.close();
    g.close();
    return 0;
}