Pagini recente » Cod sursa (job #1977477) | Cod sursa (job #1473105) | Cod sursa (job #2056839) | Cod sursa (job #402388) | Cod sursa (job #864176)
Cod sursa(job #864176)
#include <fstream>
#define nmax (1<<14)
using namespace std;
int N,K,Sol,Min,Max,A[nmax];
bool Check(int Val) {
int i,Sum,k;
for(i=1,Sum=0,k=0;i<=N;i++) {
if(Sum+A[i]>Val) {
Sum=A[i];
k++;
}
else
Sum+=A[i];
}
return (k>=K);
}
int BinarySearch() {
int i,step;
for(step=1;step<Max;step<<=1);
for(i=0;step;step>>=1)
if(i+step<=Max && Check(i+step))
i+=step;
return i+1;
}
void solve() {
for(int i=1;i<=N;i++)
Max+=A[i],
Min=(A[i]>Min?A[i]:Min);
Sol=BinarySearch();
}
void read() {
ifstream in("transport.in");
in>>N>>K;
for(int i=1;i<=N;i++)
in>>A[i];
in.close();
}
void write() {
ofstream out("transport.out");
out<<Sol<<'\n';
out.close();
}
int main() {
read();
solve();
write();
return 0;
}