Cod sursa(job #1128448)

Utilizator andi12Draghici Andrei andi12 Data 27 februarie 2014 17:08:46
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <cstdio>

using namespace std;
int v[16001];
int n,i,j,k;
int poate(int val)
{
    int ok=1,cate=1,acum=0;
    for(i=1;i<=n;i++)
    {
        if(acum+v[i]<=val)
        {
            acum=acum+v[i];
        }
        else
        {
            cate++;
            acum=v[i];
        }
        if(v[i]>val)
            ok=0;
    }
    if(cate>k)
        ok=0;
    return ok;
}
int main()
{
    FILE *in,*out;
    in=fopen("transport.in","r");
    out=fopen("transport.out","w");
    fscanf(in,"%d%d",&n,&k);
    long long pas,val;
    int fl;
    for(i=1;i<=n;i++)
        fscanf(in,"%d",&v[i]);
    val=0;
    pas=1<<28;
    while(pas>=1)
    {
        fl=poate(val+pas);
        if(fl==0)
        {
            val=val+pas;
        }
        pas=pas/2;
    }
    fprintf(out,"%lld",val+1);
    return 0;
}