Cod sursa(job #885901)

Utilizator hiticas_abelhiticasabel hiticas_abel Data 22 februarie 2013 15:00:57
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>

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


inline int max(int a, int b)
{
if(a>b) return a;
return b;
}



inline int min(int a, int b)
{
if(a<b) return a;
return b;
}

int n,k;
int a[16001],vmin,vmax;
int ls,ld;
int main()
{

f>>n>>k;

for(int i=1; i<=n; i++)
{f>>a[i]; if(a[i]>ls) ls=a[i];ld+=a[i];}


    int mij,i,rez;
    while(ls<ld)
    {

        int s=0, nr=0;
        mij=(ls+ld)/2;

        for(i=1; i<=n; i++)
        {
            if(s+a[i]<=mij) s+=a[i];
            else
              nr++, s=a[i];

                if(s)
                nr++;

                if(nr<=k)
                    ld=mij-1,rez=mij;
                    else
                    ls=mij+1;
        }

                if(nr<=k)
                    g<<mij;
                    else
                    g<<rez;
    }




    return 0;
}