Cod sursa(job #710281)

Utilizator radu102Radu Nicolau radu102 Data 9 martie 2012 12:55:03
Problema Transport Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<iostream>
#include<fstream>
using namespace std;
int v[16001],n,k;
int verif(int x)
{
	int transp,j,i;
	for(j=1,i=1;i<=k&&j<=n;i++)
	{
		transp=x;
		while(transp>=v[j]&&j<=n)
		{
			transp-=v[j];
			j++;
		}
	}
	if(j==n+1)
		return 1;
	else return 0;
}
int main()
{
	ifstream g("transport.in");
	ofstream h("transport.out");
	int min=0, max=16000,ult;
	int poz=0,p=(1<<13);
	g>>n>>k;
	for(int i=1;i<=n;i++)
	{
		g>>v[i];
		if(v[i]>min) min=v[i];
	}
	/*
	while(min!=max)
	{
		poz=(min+max)/2;
		if(verif(poz))
		{
			max=poz;
			ult=poz;
		}
		else
			min=poz+1;
	}
	if( verif(min))
		ult = min;
	*/
	while(p)
	{
		if(!verif(poz+p))
			poz+=p;
		else 
			ult = poz + p;
		p >>= 1;
	}
	h<<ult;
}