Cod sursa(job #1021357)

Utilizator vladrochianVlad Rochian vladrochian Data 3 noiembrie 2013 18:41:57
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <fstream>
#include <cmath>
using namespace std;
int n,k,s[16000],S,mx,mn;
double med;
ifstream fin("transport.in");
ofstream fout("transport.out");
int nrt(int c)
{
	int i,nt=1,crt=0;
	for(i=0;i<n;i++)
		if(crt+s[i]<=c)
			crt+=s[i];
		else
		{
			nt++;
			crt=s[i];
		}
	return nt;
}
int cbin(int l,int r)
{
	int m,sol;
	while(l<=r)
	{
		m=(l+r)/2;
		if(nrt(m)<=k)
		{
			sol=m;
			r=m-1;
		}
		else
			l=m+1;
	}
	return sol;
}
int main()
{
	int i;
	fin>>n>>k;
	for(i=0;i<n;i++)
	{
		fin>>s[i];
		S+=s[i];
		mx=max(mx,s[i]);
	}
	med=(double)S/k;
	mn=ceil(med);
	mn=max(mn,mx);
	fout<<cbin(mn,S)<<"\n";
	return 0;
}