Pagini recente » Cod sursa (job #2195732) | gluma_de_1_aprilie | Cod sursa (job #2920333) | Cod sursa (job #1441396) | Cod sursa (job #2276061)
#include <cstdio>
using namespace std;
int Sol(int v[],int n,int k,int point)
{
int trans = 1,cap = point;
for(int i=0;i<n;i++)
{
if(v[i] > cap)
{
cap = point;
trans++;
}
cap -= v[i];
}
return trans;
}
int BinarySearch(int Left,int Right,int v[],int n,int k)
{
int m;
while(Left <= Right)
{
m = (Left + Right)/2;
if(Sol(v,n,k,m) <= k)
Right = m-1;
else
Left = m+1;
}
return Left;
}
int main()
{
int n,k,suma=0,maxim=-1,v[16001];
FILE * f =fopen("transport.in","r");
fscanf(f,"%i %i",&n,&k);
for(int i=0;i<n;i++)
{
fscanf(f,"%i",&v[i]);
suma += v[i];
if(v[i] > maxim)
maxim = v[i];
}
fclose(f);
FILE * g = fopen("transport.out","w");
fprintf(g,"%i",BinarySearch(maxim,suma,v,n,k));
return 0;
}