Cod sursa(job #131225)

Utilizator RobytzzaIonescu Robert Marius Robytzza Data 3 februarie 2008 14:05:18
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <stdio.h>
#include <fstream.h>
long a[16010],n,kk,poz;
long nr=0;
long S,max=0;
void citire()
{
   ifstream fin("transport.in");
   fin>>n>>kk;
  for (int i=0;i<n;i++)
  {  fin>>a[i];
     S+=a[i];
     max=max>a[i]?max:a[i];
  }
  a[n]=99999999;
  fin.close();
}

long parc ()
{
    while (max<=S)
    {
	int m=(max+S)/2;
	int S1=0;
	int tra=0;
	for (int i=0;i<n;i++)
	{
	    S1=S1+a[i];
	    if (S1+a[i+1]>m)
	    {
		tra++;
		S1=0;
	    }
	}
	if (tra<=kk)
	{
	    poz=m;
	    S=m-1;
	}
	else
	{
	    max=m+1;
	}
    }
return poz;
}

int main ()
{
  citire();
  freopen ("transport.out","w",stdout);
  printf("%ld\n",parc());
  fclose(stdout);
  return 0;
}