Cod sursa(job #1019720)

Utilizator leontinLeontin leontin Data 31 octombrie 2013 20:36:56
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
using namespace std;
 
ifstream f ("transport.in");
ofstream g("transport.out");
 
int n, k;
int v[16001];
 
int vf(int masa)
{
  int nr = 1; int marfa = 0;
  for (int i = 1; i <= n; ++i)
    {
      if (marfa + v[i] <= masa)
    marfa += v[i];
      else
    {
      marfa = 0;
      --i;
      ++nr;
    }
    }
   
  if (nr <= k)
    return 1;
  return 0;
}

int binarysearch(int st,int dr)
{
	int mij=(st+dr)/2;
	if(st>dr)
		return st;
	else
		if(vf(mij)==1)
			binarysearch(st,mij-1);
		else
			binarysearch(mij+1,dr);
}



int main()
{
 f>>n>>k;
 
  int suma = 0,max=0;
  for (int i = 1; i <= n; ++i)
    {
      f >> v[i];
      suma += v[i];
	  if(v[i]>max)
		  max=v[i];
  }
g<<binarysearch(max,suma);

}