Cod sursa(job #595831)

Utilizator alexpascadiAlexandru Pascadi alexpascadi Data 14 iunie 2011 15:23:57
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");

int v[16002],n,k;

bool verif(int cap)
{
	int i=1,nr=1,disp=cap;
	//g<<"\n****\ntestez "<<cap<<" :\n";
	while(i<=n)
	{
		if(v[i]<=disp)
			disp = disp-v[i];
		else 
		{
			disp = cap - v[i];
			if(disp < 0)
				return false;
			nr++;
		}
		if(nr>k)
			return false;
		//g<<"dupa "<<i<<" am "<<nr<<" transporturi si "<<disp<<" capacitate disp\n";
		i++;
	}
	return true;
}

int caut(int x)
{
	int i,pas=(1<<30);
	for(i=0;pas!=0;pas>>=1)
		if(!verif(i+pas)) i+=pas;
	
	return i+1;
}

int main()
{
	int i,c;
	f>>n>>k;
	for(i=1;i<=n;i++)
		f>>v[i];
	c=caut(k);
	g<<c<<"\n";
}