Cod sursa(job #3160801)

Utilizator andreiciocanCiocan Andrei andreiciocan Data 25 octombrie 2023 08:52:44
Problema Transport Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.54 kb
#include <iostream>

using namespace std;
int V[16001];
int main()
{
  short int n,k,maxi=-1,st,dt,mij,c=0,i,cm,a;
  int s=0;
  cin>>n>>k;
  for(int i=1;i<=n;i++)
  {
  	cin>>V[i];
  	if(V[i]>maxi)
	   maxi=V[i];
	s=s+V[i];
  }
  st=maxi;
  dt=s;
  while(st<=dt)
  {
  	c=1;
	mij=(st+dt)/2;
	i=0;
	cm=0;
	for(int i=1;i<=n;i++)
	{
		if(cm+V[i]<=mij)
		{
			cm=cm+V[i];
		}
		else
		{
			cm=0;
			c++;
		}
	}
	 if(c>k)
	 {
	 	st=mij+1;
	 }
	 else
	 {
	 	a=dt;
	 	dt=mij-1;
	 }
  }
  cout<<a;
  return 0;

}