Cod sursa(job #1879013)

Utilizator MihneaFunnyMihnea Mihnea MihneaFunny Data 14 februarie 2017 17:49:14
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>

using namespace std;
const int NM=16000;
int v[NM+5];
ifstream cin("transport.in");
ofstream cout("transport.out");
int main()
{
	int n,i,l,k,total,st,dr,med,last;
	cin>>n>>k;
	for(i=1;i<=n;i++)
		{
		cin>>v[i];
		total=total+v[i];
		}
	st=1;
	dr=total;
	last=0;
	while(st<=dr)
	{
		med=(st+dr)/2;
		//Calculam cate transporturi sunt necesare pentru transporta toatesaltelele cu un camion de capacitate med
		int s=0,tr=0;
		for(i=1;i<=n;i++)
			{
			if(v[i]>med)
			{
				tr=k+1;
				break;
			}
			if(s+v[i]<=med)
				s=s+v[i];
			else
			{
				tr++;
				s=v[i];
			}
			}
		if(s<=med)
			tr++;
		if(tr<=k)
		{
			last=med;
			dr=med-1;
		}
		else
			st=med+1;
	}
	cout<<last<<"\n";
    cin.close();
    cout.close();
    return 0;
}