Cod sursa(job #2174776)

Utilizator ana.liliacAna Liliac ana.liliac Data 16 martie 2018 13:25:55
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.57 kb
#include <fstream>

using namespace std;
ifstream in ("transport.in");
ofstream out ("transport.out");
int v[16001];
int main()
{
    int n,k,i,ma=0,s=0,st,dr,m=0,k1,kk,cnt=0;
    in>>n>>k;
    for(i=1;i<=n;i++)
	{
		in>>v[i];
		if(v[i]>ma)
			ma=v[i];
		s+=v[i];
	}
	st=ma;dr=s;
	int elem=0;
	while(st<=dr)
	{
		m=(st+dr)/2;
		cnt=1;
		kk=0;
		for(i=1;i<=n;i++)
		{
			if(kk+v[i]<=m)
				kk+=v[i];
			else
			{
				cnt++;
				kk=v[i];
			}
		}
		if(cnt>k)
			st=m+1;
		else
		{
			elem=m;
			dr=m-1;
		}
	}
	out<<elem;
    return 0;
}