Pagini recente » Cod sursa (job #1753954) | Cod sursa (job #2539192) | Cod sursa (job #3160128) | Cod sursa (job #440799) | Cod sursa (job #937859)
Cod sursa(job #937859)
#include <fstream>
#include <limits.h>
#define m1(a,b) (a<b?a:b)
#define m2(a,b) (a>b?a:b)
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int n,k,v[16011],maxim=0,minim=INT_MAX;
inline bool cond(int c){
register int i=0,j=1,oc=0;
while(i<=k && j<=n){
oc=0;
while(oc+v[j]<=c && j<=n){
oc+=v[j];
j++;
}
i++;
}
if(i<=k)
return true;
return false;
}
int main(void){
register int i,j;
f>>n>>k;
for(i=1;i<=n;i++){
f>>v[i];
minim=m1(v[i],minim);
maxim+=v[i];
}
int p=minim,u=maxim,m,sol=0;
while(p<=u){
m=p+(u-p)/2;
if(!cond(m))
p=m+1;
else{
u=m-1;
sol=m;
}
}
g<<sol;
return 0;
}