Cod sursa(job #495046)

Utilizator DEYDEY2Tudorica Andrei DEYDEY2 Data 23 octombrie 2010 19:50:21
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include<fstream>
using namespace std;
int n,k,x[16010],sm;
int ok(int c)
{
	int m=0,s=0,i=1;
	for(i=1;i<=n;i++)
	{ 
		if(x[i]>c) return k+1;
		else 
			if(s+x[i]<=c)
				s=s+x[i];
			else 
			{
				m++;
				s=x[i];
			}
	}
	if(s<c) m++;
	return m;
}

int cb()
{
	
	int st,dr,med,last=-1;
	st=1;dr=sm;
	while(st<=dr)
	{
		med=(st+dr)/2;
		if(ok(med)<=k)
		{
			last=med;
			dr=med-1;
		}
		else st=med+1;
	}
	return last;
}
int main()
{
	ifstream f("transport.in");
	ofstream g("transport.out");
	int i;
	f>>n>>k;
	for(i=1;i<=n;i++){ f>>x[i]; sm=sm+x[i];}
	g<<cb();
	f.close();
	g.close();
	return 0;
}