Cod sursa(job #1711814)

Utilizator alexirimiaIrimia Alexandru alexirimia Data 1 iunie 2016 11:13:50
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include<fstream>
using namespace std;
#define MAX 999999
int s[MAX],n,k,suma,maxim=0;
ifstream in("transport.in");
ofstream out("transport.out");

void citire ()
{
    in>>n>>k;
    for(int i=1; i<=n; i++)
    {
        in>>s[i];
        suma+=s[i];
        maxim=max(maxim, s[i]);
    }
    in.close();
}
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;
    citire();
    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;
    }
    out<<rez;
    out.close();
    return 0;
}