Pagini recente » Cod sursa (job #1401110) | Statistici Caramete Tiberiu (caramete_t) | Cod sursa (job #1760657) | Cod sursa (job #2042952) | Cod sursa (job #1517198)
#include <iostream>
#include <cstdio>
using namespace std;
int i,V[1601],n,k,mn,mx,k1,sum,mij,s;
bool verificare(int k,int s)
{
int i=0,sum;
while(k>0 && i<=n)
{
sum=0;
while(sum<s && i<n)
{
i++;
sum+=V[i];
}
if(sum>s) i--;
k--;
}
if(i<n) return 0;
else return 1;
}
int main()
{
int i,mx=0,suma=0,mn,mij;
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%i %i",&n,&k);
for(i=1;i<=n;i++)
{
scanf("%i",&V[i]);
if(V[i]>mx) mx=V[i];
suma+=V[i];
}
mn=suma;
while(mx<suma)
{
mij=(mx+suma)/2;
if(verificare(k,mij)==0)
{
mx=mij+1;
}else{
mn=mij;
suma=mij;
}
}
cout<<mn;
}