Cod sursa(job #1453285)

Utilizator PetruZZatic Petru PetruZ Data 23 iunie 2015 10:25:11
Problema Transport Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <iostream>

using namespace std;

int a[16002];

int main ()
{
	freopen("transport.in","r",stdin);
	freopen("transport.out","w",stdout);
	
	int n, k, i, j, sum=0, med=0, min=0;;
	cin >> n >> k;
	
	
	for (i=0; i<n; i++) cin >> a[i], sum+=a[i];
	
	min=sum/k+1;
	med=(sum+min)/2;
	
	bool u=true;
	
	while (u)
	{
	int h(0);
	i=0; j=0;
	while((i<k)&&(j<n)) {
						if(h+a[j]>=med)
							{
								i++;
								h=0;
							
							}
						else h+=a[j], j++;
					}
	if (i>=k) min++;
	if (min==sum) u=false;
	sum=med; med=(min+sum)/2;
	if (min==sum) u=false;	
	}
	

	cout << min;
	
	
return 0;
}