Cod sursa(job #1278750)

Utilizator stanamd123Stana Marius Vlad stanamd123 Data 29 noiembrie 2014 12:52:38
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <iostream>
#include <stdio.h>
#include <fstream>

using namespace std;

#define MaxN 16001

int V[MaxN];
int n,k,iMax,lmax,lmin,i,nrt,c,l1,l2,lm,m;

int main(){

    freopen("transport.in","r",stdin);
    freopen("transport.out","w",stdout);

    iMax=0;
    lmax=0;
    scanf("%d%d",&n,&k);

    for (i=1; i<=n; i++)
    {
        scanf("%d",&V[i]);
    }

    for(i=1;i<=n;i++)
    {
        lmax=lmax+V[i];

        if(V[i]>iMax)
        {
            iMax=V[i];
        }
    }

    lmin=iMax;
    l1=lmin;
    l2=lmax;

    while (l1<=l2)
    {
        c=0;
        nrt=1;
        m=(l1+l2)/2;

        for (i=1; i<=n; i++)
        {
            if (c+V[i]<=m)
            {
               c=c+V[i];
            }

            else
            {
              nrt++;
              c=V[i];
            }
        }

        if (nrt<=k)
        {
            l2=m-1;
            lm=m;
        }
        else
        {
           l1=m+1;
        }

    }

    printf("%d",lm);
    return 0;
}