Cod sursa(job #155583)

Utilizator DorinOltean Dorin Dorin Data 12 martie 2008 00:21:16
Problema Transport Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
# include <stdio.h>
# include <vector>

using namespace std;

# define input "transport.in"
# define output "transport.out"

# define MAX 1605

long i,j,n,k,st,dr,mij;
long a[MAX];

int main()
{
    freopen(input, "r", stdin);
    freopen(output, "w", stdout);

    scanf("%ld%ld",&n,&k);
    dr = 0;
    st = 0;
    for(i=1;i<=n;i++)
    {
       scanf("%ld",&a[i]);
       dr+=a[i];
       if(a[i] > st)
           st = a[i];
    }
    while(st < dr)
    {
             long mij = (st + dr) >> 1;
             long nr = 0;
             for(i=1;i<=n;)
             {
                 long s = a[i];
                 for(i++;i<=n && s+a[i] <= mij;i++)  
                     s+=a[i];
                 nr ++;
            }
             if(nr <= k)
                dr = mij;
             else
                st = mij+1;
    }
    printf("%ld",st);

    return 0;
}