Cod sursa(job #456972)

Utilizator siminescuPaval Cristi Onisim siminescu Data 17 mai 2010 15:24:27
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include<fstream>
using namespace std;
#define nmax 16002
ifstream f("transport.in");
ofstream g("transport.out");
int n,k,v[nmax];long long sum;
int citire()
{
	f>>n>>k;int i,max=0;
	for(i=1;i<=n;i++) {
		f>>v[i];sum+=v[i];
		if(max<v[i]) max=v[i];
	}
	return max;
}
int verific(int p)
{
	int s=0,i,nr=0;
	for(i=1;i<=n;i++)
	{
		if(s+v[i]<=p) s+=v[i];
		else{
			nr++;s=v[i];
		}
		if(nr==k&&i<=n) return 0;
	}
	return 1;
}
int main()
{
	int st,dr,mij;
	st=citire();dr=sum;
	while(st<dr)
	{
		mij=(st+dr)/2;
		if(verific(mij)) dr=mij;
		else st=mij+1;
	}
	g<<st<<'\n';
}