Cod sursa(job #580674)

Utilizator tinkyAndrei Ilisei tinky Data 13 aprilie 2011 12:56:12
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include<fstream>
using namespace std;
int n,k,s=0,t=0;
int v[16010],a[16010];
void citire()
{
	int i;
	ifstream in("transport.in");
	in>>n>>k;
	for (i=1;i<=n;i++)
	{
		in>>v[i];
		s+=v[i];
		a[i]=s;
		t=max(t,v[i]);
	}
}
int nrtrans(int x)
{
	int i=1,nr=0;
	while (i<=n)
	{
		int st;
		st=0;
		for (st;st+v[i]<=x&&i<=n;i++)
			st+=v[i];
		nr++;
		if (nr>k)
			return k+1;
	}
	return nr;
}
		
int main()
{
	int st,dr,mij,i;
	citire();
	st=t;
	dr=s;	
	mij=st+(dr-st)/2;
	while (st<dr)
	{		
		if (nrtrans(mij)<=k)
			dr=mij;
		else
			st=mij+1;
		i=dr;
		mij=st+(dr-st)/2;
	}
	ofstream out("transport.out");
	out<<i;
}