Cod sursa(job #591201)

Utilizator dtoniucDaniel Toniuc dtoniuc Data 23 mai 2011 09:46:52
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include<iostream>
#include<fstream>
using namespace std;
int n,k,s,t,v[16010];
void citire()
{
	ifstream fin("transport.in");
	fin>>n>>k;
	for (int i=1;i<=n;i++)
	{
		fin>>v[i];
		s+=v[i];
		t=max(t,v[i]);
	}
}
int bin(int x)
{
	int nr=0,i=1;
	while (i<=n)
	{
		for(int st=0;st+v[i]<=x&&i<=n;i++)
			st+=v[i];
		nr++;
		if(nr>k)
			return k+1;
	}
	return nr;
}
int main()
{
	ofstream fout("transport.out");
	citire();
	int st=t,p;
	int dr=s;
	int mij=st+(dr-st)/2;
	while(st<dr)
	{
		if(bin(mij)<=k)
			dr=mij;
		else 
			st=mij+1;
		p=dr;
		mij=st+(dr-st)/2;
	}
	fout<<p;
}