Cod sursa(job #211947)

Utilizator AthanaricCirith Gorgor Athanaric Data 3 octombrie 2008 22:21:21
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <stdio.h>
int v[16000],n,nrt,c;
void citire()
{
	freopen("transport.in","r",stdin);
	freopen("transport.out","w",stdout);
	scanf("%d%d",&n,&nrt);
	for (int i=1; i<=n; i++)
		scanf("%d",&v[i]);
}
int calcul(int q)
{
	int i=1; 
	int wtf=0,s=0;
	while (i<n)
	{
		s=v[i]; 
		if (v[i]>q)
			return 16001;
		while ((s+v[i+1]<=q)&&(i<n))
		{
			if (v[i]>q)
				return 16001;
			i++;
			s+=v[i];
		}
		wtf++; i++;
	}
	
	return wtf;
}

void cautbin()
{
	int st,dr,m;
	st=1; dr=256000000;
	while (st!=dr)
	{
		m=(st+dr)/2;
		printf("%d %d %d\n",st,dr,calcul(m));
		if (calcul(m)>nrt)
		st=m+1;
		else
			dr=m;
	}
	printf("%d ",st);
}
int main()
{
	citire();
	cautbin();
}