Cod sursa(job #1573977)

Utilizator marinaflommarina florentina marinaflom Data 20 ianuarie 2016 01:50:07
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <iostream>
#include<fstream>
using namespace std;

int s[16005],n,k,suma,maxim;

int nr_transporturi(int mij)
{
    int sum=0;
    int trans=1;
    for(int i=1; i<=n; i++)
    {
        sum+=s[i];
        if(sum>mij)
            {
                trans++;
                sum=s[i];
            }

    }
    return trans;

}

int main()
{
    int st,dr,mijloc,rez;
    ifstream f("transport.in");
    ofstream g("transport.out");
    f>>n>>k;
    for(int i=1; i<=n; i++)
       {
        f>>s[i];
        suma+=s[i];
        maxim=max(maxim, s[i]);
       }
    f.close();
    st=maxim;
    dr=suma;
    while(st<=dr)
    {
        mijloc=(st+dr)/2;
        if(nr_transporturi(mijloc)<=k)
        {
            dr=mijloc-1;
            rez=mijloc;

        }
        else
            st=mijloc+1;
    }
    g<<rez;
    g.close();
    return 0;
}