Cod sursa(job #885919)

Utilizator hiticas_abelhiticasabel hiticas_abel Data 22 februarie 2013 15:13:32
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 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,nr,s;
    while(ls<=ld)
    {

         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;
}