Cod sursa(job #1315496)

Utilizator priestnoobFMI - Dan Nema priestnoob Data 12 ianuarie 2015 20:58:03
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<stdio.h>
#include<algorithm>

using namespace std;

#define nmax 16005

int n,k,v[nmax],c,x;

void citire()
{
    scanf("%d%d",&n,&k);
    for(int i=1;i<=n;++i) scanf("%d",&v[i]);
}

void cb()
{
    int pas,poz=0,r,cont,gr;
    pas=1<<30;
    while(pas)
    {
        gr=0;
        cont=0;
        r=poz+pas;
        for(int i=1;i<=n;++i)
        {
            if(v[i]>r) cont=1<<30;
            if(v[i]>r) break;
            if(gr+v[i]<=r)
                gr+=v[i];
            else
            {
                gr=v[i];
                cont++;
            }
        }
        pas>>=1;
        if(cont<=k)
            c=r;
        else poz+=pas;
    }
}

int main()
{
    freopen("transport.in","r",stdin);
    freopen("transport.out","w",stdout);
    citire();
    cb();
    printf("%d",c);
}