Cod sursa(job #2551787)

Utilizator DunareanuDinu Dunareanu Dunareanu Data 20 februarie 2020 10:39:00
Problema Transport Scor 100
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <stdio.h>
#include <stdlib.h>

FILE *fin , *fout;

int v[16000];

int f(int nr, int n, int k) {
    int s=0,tr=0,i;
    for(i=0;i<n;i++) {
        if(v[i]>nr) {
            return k+1;
        }
        if(s+v[i]<=nr) {
            s+=v[i];
        }
        else {
            tr++;
            s=v[i];
        }
    }
    return tr+1;
}

int main() {
    fin=fopen("transport.in","r");
    fout=fopen("transport.out","w");

    int n,k,i,st,dr,mij,x;
    fscanf(fin,"%d%d",&n,&k);
    for(i=0;i<n;i++) {
        fscanf(fin,"%d",&v[i]);
    }
    st=1;
    dr=256000000;
    while(st<=dr) {
        mij=(st+dr)/2;
        if(f(mij,n,k)<=k) {
            dr=mij-1;
            x=mij;
        }
        else {
            st=mij+1;
        }
    }
    fprintf(fout,"%d\n",x);

    fclose(fin);
    fclose(fout);
    return 0;
}