Cod sursa(job #773551)

Utilizator Mihai22eMihai Ionut Enache Mihai22e Data 2 august 2012 00:26:46
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<stdio.h>
#include<vector>

using namespace std;

vector < int > v;

int n, k, res, st, end, mid, i;

int check(int x)
{
	int nr = 0, i = -1, s;
	
	while(nr <= k && i + 1 < n)
	{
		s = 0;
		while(s + v[i+1] <= x && i + 1 < n)
			++i, s += v[i];
		nr++;
	}
	
	if(nr <= k)
		return 1;
	return 0;
}

int main()
{
	FILE *f = fopen("transport.in", "r");
	
	fscanf(f, "%d %d", &n, &k);
	for(i = 0; i < n; ++i)
		fscanf(f, "%d", &st), v.push_back(st), end += st;
	
	fclose(f);
	
	st = 1;
	while(st <= end)
	{
		mid = (st + end) / 2;
		if(check(mid))
			end = mid - 1;
		else
			st = mid + 1;
	}
	
	res = st;
	
	FILE *g = fopen("transport.out", "w");
	
	fprintf(g, "%d\n", res);
	
	fclose(g);
	
	return 0;
}