Cod sursa(job #343036)

Utilizator Alexa_ioana_14Antoche Ioana Alexandra Alexa_ioana_14 Data 24 august 2009 18:08:19
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<cstdio>
#define N 16001
short int n,k,v[N],minim;
int s,p=0,u;
bool verific(int x)
{
	int sum=0,num=0;
	for (int i=0; i<n;)
	{
		while(sum<x&&i<n)
		{
			++i;
			sum+=v[i];
		}
		++num;
		if(sum>x)
			--i;
		sum=0;
	}
	if (num>k)
		return true;
	return false;
}
void caut()
{
	int m;
	while (p!=u)
	{
		m=(p+u)/2;
		if (verific(m))
			p=m+1;
		else
			u=m;
	}
	printf("%d",p);
}
void citire()
{
	freopen("transport.in","r",stdin);
	freopen("transport.out","w",stdout);
	scanf("%hd%hd",&n,&k);
	for (int i=1; i<=n; ++i)
	{
		scanf("%hd",&v[n-i+1]);
		if (v[n-i+1]>p)
			p=v[n-i+1];
		u+=v[n-i+1];
	}
	caut();
}
int main()
{
	citire();
	return 0;
}