Cod sursa(job #1314074)

Utilizator eneandradaEne Oana-Andrada eneandrada Data 11 ianuarie 2015 15:01:59
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("transport.in");
ofstream g("transport.out");

int st[16005];

int dr(int x, int n) //nr min de drumuri pe care le face un camion cu capacitatea x
{
    int drum=0,s=0;
    while(n)
    {
        if(s+st[n]<x)
            {s=s+st[n]; n--;}
        else
            if(s+st[n]==x)
                {drum++; s=0; n--;}
            else
                {drum++; s=0;}
    }
    if(s<x)
        drum++;
    return drum;
}

int main()
{   int k,i,mx,s,m,n;
    f>>n>>k;
    for(i=1;i<=n;i++)
    {
        f>>st[n-i+1];
        if(st[n-i+1]>mx)
            mx=st[n-i+1]; //cea mai voluminoasa saltea
        s=s+st[n-i+1]; //suma volumelor tututor saltelelor
    }
    while(mx<=s)
    {
        m=(mx+s)/2;
        if(dr(m,n)<=k)
            s=m-1;
        else
            mx=m+1;
    }
    g<<mx;
    f.close(); g.close();
    return 0;
}