Cod sursa(job #1210409)

Utilizator crysstyanIacob Paul Cristian crysstyan Data 19 iulie 2014 22:07:53
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <fstream>
using namespace std;
int i,n,k,v[16002],maxim=-2000000000,s=0;
ifstream f("transport.in");
ofstream g("transport.out");
bool ok(int x)
{
    int cont=0,suma=0;

    for (i=1; i<=n; i++)
    if (suma + v[i] <= x )
    suma+=v[i];
    else
    {
        suma=v[i]; cont++;
    }

    if (cont<k)
    return 1;
    else return 0;
}

int main ()
{
    f>>n>>k;

    for (i=1; i<=n; i++)
    {
        f>>v[i];
        s+=v[i];
        if (v[i]>=maxim) maxim=v[i];

    }
    int st=maxim,dr=s,med;

    while (st<=dr)
    {
       med=(st+dr)/2;
       if (ok(med)==1)
       dr=med-1;
       else
       st=med+1;

    }
    g<<st;
    return 0;
}