Cod sursa(job #1210744)

Utilizator rangerChihai Mihai ranger Data 20 iulie 2014 23:18:20
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
const int nmax=16010;
int n,k,a[nmax];
int main()
{
    cin>>n>>k;
    int st=0,dr=0;
    for (int i=1;i<=n;i++)
    {
        cin>>a[i];
        dr+=a[i];
        if (a[i]>st)
            st=a[i];
    }
    int last;
    while (st<=dr)
    {
        int mij=(st+dr)/2;
        int s=0,k1=1,possible=1;

        for (int i=1;i<=n;i++)
        {
            s+=a[i];
            if (s>mij)
            {
                s=a[i];
                k1++;
            }
            if (k1>k)
            {
                possible=0;
                break;
            }
        }
        if (possible)
        {
            last=mij;
            dr=mij-1;
        }  else
        {
            st=mij+1;
        }
    }
    cout<<last;
    return 0;
}