Pagini recente » Cod sursa (job #329035) | Cod sursa (job #1544284) | Cod sursa (job #533080) | Cod sursa (job #1183763) | Cod sursa (job #1213330)
#include<fstream>
#include<algorithm>
using namespace std;
#define MAXN 16005
ifstream cin("transport.in");
ofstream cout("transport.out");
int N,K,A[MAXN];
int incape(int C)
{ int nr=0,S=0,i=1;
while(i<=N)
if (S+A[i]<=C)
S+=A[i],i++;
else
nr++,S=0,S=A[i],i++;
// if(S>0) nr++;
if(nr>K) return 1;
if (nr<K) return 0;
if (nr==K) return 2;
}
int main() {
int i,j,k,P=0,Q=0,C;
cin>>N>>K;
for(i=1;i<=N;i++)
cin>>A[i], Q+=A[i];
P=*max_element(A+1,A+N+1);
C=0;
while(incape(C)!=2) {
C=(P+Q)/2;
if(incape(C)==1) P=C;
if(incape(C)==0) Q=C;
}
cout<<C;
return 0;
}