Cod sursa(job #2076165)

Utilizator ParketPatrick Josephs Parket Data 26 noiembrie 2017 11:49:43
Problema Transport Scor 60
Compilator c Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <stdio.h>
#include <stdlib.h>
#define L 16
int n,k;
int v[16000];
int sepoate(int c){
    int cc=0,nr=0,i;
    for(i=0;i<n;i++){
        if(v[i]>cc){
            cc=c;
            nr++;
        }
        if(v[i]>cc)
            return 0;
        if(nr>k)
            return 0;
        cc-=v[i];
    }
    return 1;
}
int main()
{
    FILE *f1 = fopen("transport.in","r"), *f2 = fopen("transport.out","w");
    int i;
    int pas, r;
    r=0;
    pas=1<<L;
    fscanf(f1,"%d%d",&n,&k);
    for(i=0;i<n;i++)
        fscanf(f1,"%d",&v[i]);
    printf("%d",pas);
    while(pas!=0){
        if(!sepoate(r+pas))
            r+=pas;
        pas=pas/2;

    }
    fprintf(f2,"%d",r+1);
    return 0;
}