Cod sursa(job #1021528)

Utilizator andreeaghetuUNIBUC andreeaghetu andreeaghetu Data 3 noiembrie 2013 22:26:41
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("transport.in");
ofstream out ("transport.out");
int N, K, C, v[16005];
bool verifica (int c)
{
    int s=0, ct=1;
    for (int i=0;i<N;++i)
    {
        if (s+v[i]<=c)
            s=s+v[i];
        else
        {
            --i;
            s=0;
            ++ct;
        }

    }
    if (ct<=K)
        return true;
    return false;
}
int main()
{
    in>>N>>K;
    int maxim=0, suma=0;
    for (int i=0;i<N;++i)
    {
        in>>v[i];
        suma+=v[i];
        if (v[i]>maxim)
            maxim=v[i];
    }
    int a=maxim, b=suma;
    while (a<=b)
    {
        int m=(a+b)/2;
        if (verifica(m))
        {
            b=m-1;
        }
        else
        {
            a=m+1;
        }
    }
    out<<a;
}