Cod sursa(job #660575)

Utilizator raazvvannheghedus razvan raazvvann Data 13 ianuarie 2012 10:50:01
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <fstream>
#define DIM 16001
ifstream f("transport.in");
ofstream g("transport.out");
long long  m,n,k,a,b,r;
long long v[DIM];
int test(int s)
{
        int c=0,m=1;
        if (s<b) return 0;
        for(int i=1; i<=n; i++)
                if (c+v[i]<=s) c+=v[i];
                else {c=v[i];m++;}
        if (m<=k) return 1;
        return 0;
}
void caut()
{
        int st=1,dr=a;
        while (st<=dr) {
                m=(st+dr)/2;
                if (test(m)==1) {dr=m-1;r=m;}
                else st=m+1;
        }
}
int main()
{
	f>>n>>k;
	for(int i=1; i<=n; i++) {f>>v[i];a+=v[i];b=max(b,v[i]);}
        caut();
	g<<r;
	f.close();
	g.close();
	return 0;
}