Cod sursa(job #1098970)

Utilizator dtz.petricanPetrican Danut dtz.petrican Data 5 februarie 2014 13:14:44
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 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;
}