Cod sursa(job #2631249)

Utilizator Razvan48Capatina Razvan Nicolae Razvan48 Data 29 iunie 2020 16:17:21
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <fstream>
using namespace std;

const int NMAX = 16000;

int n,k;
int x[1 + NMAX];

bool verific(int cap)
{
    int i;
	int nrD=0,capacitateCrt=0;
	for(i=1;i<=NMAX;i++)
{
	capacitateCrt+=x[i];
	if(capacitateCrt>cap)
{
	capacitateCrt=x[i];
	nrD++;
}
}
nrD++;
if(nrD<=k)
	return 1;
return 0;
}

int main()
{
	ifstream f("transport.in");
	ofstream g("transport.out");

	int i, maxim = 0;

	f>>n>>k;
	for(i=1;i<=n;i++)
{
	f>>x[i];
	if(x[i]>maxim)
{
	maxim=x[i];
}
}

	int sol = 0;
	int st=maxim,dr=NMAX*NMAX;
	int mijloc;

	while(st<=dr)
{
	mijloc=(st+dr)/2;
	if(verific(mijloc))
{
sol=mijloc;
	dr=mijloc-1;
}
else
{
	st=mijloc+1;
}
}

g<<sol<<endl;

return 0;
}