Cod sursa(job #1310026)

Utilizator eneandradaEne Oana-Andrada eneandrada Data 6 ianuarie 2015 12:38:57
Problema Transport Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");


int st[100];

int dr(int x,int n) //nr de drumuri pe care le face un camion cu capacitatea x
{
    int drum=0,s=0;
    while(n) //in asta scadeai n si ramanea 0 si data viitoare. l-am pus eu ca parametru si nu il mai modifica
    {
        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[i];
        if(st[i]>mx)
            mx=st[i]; //cea mai voluminoasa saltea
        s+=st[i]; //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;
}