Cod sursa(job #1338185)

Utilizator ValentinSavoiuFMI Savoiu Valentin-Marian ValentinSavoiu Data 9 februarie 2015 20:49:47
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <iostream>
#include <fstream>
#include <cstdio>
using namespace std;
ofstream g("transport.out");
int n,k,s,a[16001],li,ls,m,kk,maxim,i,ok;
int main()
{
    freopen("transport.in","r",stdin);
    scanf("%d""%d",&n,&k);
    scanf("%d",&a[1]);
    maxim=a[1];
    s=a[1];
    for(i=2;i<=n;i++)
    {
        scanf("%d",&a[i]);
        if(a[i]>maxim) maxim=a[i];
        s=s+a[i];
    }
    li=maxim;
    ls=s;
    while(li<=ls)
    {
        m=(li+ls)/2;
        s=0;
        kk=1;
        for(i=1;i<=n;i++)
        {
            if(s+a[i]<=m)
            {
                s=s+a[i];
            }
            else
            {
                kk++;
                s=a[i];
            }
        }
        if(kk<=k)
        {
            ok=1;
            ls=m-1;
        }
        else
        {
            ok=0;
            li=m+1;
        }
    }
    if(ok) g<<m;
    else g<<m+1;
    return 0;
}