Cod sursa(job #2208331)

Utilizator FilipM012Mitnei Filip FilipM012 Data 29 mai 2018 10:58:19
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
	freopen("transport.in","r",stdin);
	freopen("transport.out","w",stdout);
	int n,k,x,i,mij,dr,st,gasit,s,maxi,z,nrt;
	cin>>n>>k;
	int v[n+1];
	s=0; maxi=-1;
	for(i=1; i<=n; i++)
	{
		cin>>v[i];
		if(v[i]>=maxi)
			maxi=v[i];
		s=s+v[i];
	}
	st=maxi; dr=s;
	while(st<=dr)
	{
		mij=(st+dr)/2;
		z=0; nrt=1;
		for(i=1; i<=n; i++)
		{
			if(z + v[i]<=mij)
				z=z+v[i];
			else{
				z=v[i];
				nrt++;
			}
		}
		if(nrt>k)
			st=mij+1;
		else{
			dr=mij-1;
			x=mij;
		}
	}
    cout<<x;
    return 0;
}