Cod sursa(job #1671765)

Utilizator ioana.jianuIoana Jianu ioana.jianu Data 2 aprilie 2016 10:22:16
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<iostream>
#include<stdio.h>
int v[16001];
using namespace std;
int main(){
    FILE *fin,*fout;
    fin=fopen("transport.in","r");
    fout=fopen("transport.out","w");
    int n,k,i,l1,l2,max,s,tr,suma,m,min;
    fscanf(fin,"%d%d",&n,&k);
    s=max=0;
    for(i=1;i<=n;i++){
        fscanf(fin,"%d",&v[i]);
        if(v[i]>max)
            max=v[i];
        s+=v[i];
    }
    l1=max;
    l2=s;
    min=256000001;
    while(l1<=l2){
        m=(l1+l2)/2;
        i=1;
        tr=0;
        while(i<=n){
            suma=0;
            while(i<=n&&suma+v[i]<=m){
                suma+=v[i];
                i++;
            }
            tr++;
        }
        if(tr==k)
            if(m<min)
                min=m;
        if(tr>k)
            l1=m+1;
        else
            l2=m-1;
    }
    fprintf(fout,"%d",min);
    fclose(fin);
    fclose(fout);
    return 0;
}