Cod sursa(job #814949)

Utilizator mihail.jianuJianu Mihail mihail.jianu Data 16 noiembrie 2012 14:11:06
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<stdio.h>
int main()
{
    int n,k,v[16001],i,s=0,max=0,c1,c2,c,cc,nrd,nr;
    freopen("transport.in","r",stdin);
    freopen("transport.out","w",stdout);
    scanf("%d%d",&n,&k);
    for(i=1;i<=n;i++)
    {
        scanf("%d",&v[i]);
        s+=v[i];
        if(v[i]>max)
            max=v[i];
    }
    c1=max;
    c2=s;
    c=(c1+c2)/2;
    nr=c1;
    while(c2-c1>1)
    {
        cc=c;
        nrd=1;
        for(i=1;i<=n;i++)
            if(c>=v[i])
                c-=v[i];
            else
            {
                c=cc;
                nrd++;
                c-=v[i];
            }
        if(nrd>k)
        {
            c1=cc;
            c=(c1+c2)/2;
        }
        else
        {
            nr=cc;
            c2=cc;
            c=(c1+c2)/2;
        }
    }
    printf("%d",nr);
    return 0;
}