Pagini recente » Cod sursa (job #1656063) | Cod sursa (job #1750621) | Cod sursa (job #963692) | Cod sursa (job #1206120) | Cod sursa (job #987304)
Cod sursa(job #987304)
#include <iostream>
#include <stdio.h>
#include <fstream>
#define MAX_N 17000
using namespace std;
int v[MAX_N],n,k,answer=MAX_N,l,r;
ofstream out("transport.out");
void citire()
{
freopen("transport.in","r",stdin);
scanf("%d %d",&n,&k);
int i;
for(i=1; i<=n; i++)
{
scanf("%d",&v[i]);
l=max(l,v[i]);
r+=v[i];
}
answer=r;
}
int determina_nr_drumuri(int capacity)
{
int answer=1,cc=0,i;
for(i=1; i<=n; i++)
{
cc+=v[i];
if(cc>capacity)
{
cc=v[i];
answer++;
}
}
return answer;
}
void cautare_binara(int left,int right)
{
int cv,m;
if(left<=right)
{
m=(left+right)/2;
//out<<m<<endl;
cv=determina_nr_drumuri(m);
if(cv<=k)
{
answer=min(answer,m);
cautare_binara(left,m-1);
}
else cautare_binara(m+1,right);
}
//cout<<left<<endl;
}
int main()
{
citire();
cautare_binara(l,r);
out<<answer;
}