Cod sursa(job #856589)

Utilizator monica11Szekely Monica monica11 Data 16 ianuarie 2013 19:22:48
Problema Transport Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include<fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int n,k,st,dr,m,i,max1,nr,s,x,a[1001];
int main ()
{
	f>>n>>k;
	for(i=1;i<=n;i++)
    {
		f>>a[i];
		if(a[i]>max1)
			max1=a[i];
		dr=dr+a[i];
    }
	st=max1-1;
	dr++;
	while(st<=dr)
    {
		m=(st+dr)/2;
		s=0;
		x=1;
		for(i=1;i<=n;i++)
		{
			if(s+a[i]<=m)
				s=s+a[i];
			else
			{
				x++;
				s=a[i];
            }
        }
		if(x<=k)
			dr=m-1;
		else
			st=m+1;
		if(x==k)
			nr=m;
	}
	if(x!=k)
		m=nr;
	if(m<max1)
		m=max1;
	g<<m;
	return 0;
}