Cod sursa(job #786828)

Utilizator miron_dorin95Miron Dorin miron_dorin95 Data 12 septembrie 2012 10:32:01
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <iostream>
#include <fstream>
using namespace std;
long int n,k,max=-1,s,x[16000];
void cb();
int main ()
{
	ifstream f("transport.in");
	long int i;
	f>>n;
	f>>k;
	for(i=1;i<=n;i++)
	{
		f>>x[i];
		s+=x[i];
		if(x[i]>max)
			max=x[i];
	}
	cb();
	return 0;
}
void cb()
{
	long int st,dr,mij,sum,i,nr,sol;
	st=max;
	dr=s;
	while (st<=dr)
	{
		mij=(st+dr)/2;
		sum=0;
		nr=1;
		for (i=1;i<=n;i++)
		{
			sum+=x[i];
			if(sum>mij)
			{
				sum=x[i];
				nr++;
			}
			if(nr>k)
			{
				st=mij+1;
				break;
			}
		}
		if(nr<=k)
		{
			sol=mij;
			dr=mij-1;
		}
	}
	ofstream g("transport.out");
	g<<sol;
}