Cod sursa(job #210828)

Utilizator RegeleUmbrelorPopescu Mihai RegeleUmbrelor Data 29 septembrie 2008 18:13:20
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
using namespace std;
#include<fstream>
const int NMAX1=256000000,NMAX2=16005;
int v[NMAX2], N,K, i;

int numar(int m)//este numarul de transporturi necesare pentru capacitatea aleasa;
{
	int s=0,nr=0,i=1;
	while(i<=N)
	{
		if(s+v[i]<=m)
		{	
			s+=v[i];i++;
		}
		else
		{	
			nr++;s=0;
		}
	}
	nr++;
	return nr;
}
int cautare(int p, int u)
{
	while(p!=u)
	{
		if(numar((p+u)/2)<=K)
			u=(p+u)/2;
		else
			p=(p+u)/2+1;
	}
	if (numar(p)<=K)
		return p;
	else 
		return p+1;
}

int main()
{
	int max=0,svect=0;
	ifstream in("transport.in");
	ofstream out("transport.out");
	in>>N>>K;
	for(i=1;i<=N;++i)
	{	
		in>>v[i];svect+=v[i];
		if(v[i]>=max)
			max=v[i];
	}
	out<<cautare(max,svect)<<'\n';
	in.close();out.close();
	return 0;
}