Pagini recente » Cod sursa (job #2912536) | Cod sursa (job #2611500) | Cod sursa (job #3265082) | Cod sursa (job #2650345) | Cod sursa (job #476903)
Cod sursa(job #476903)
#include<fstream>
using namespace std;
#define NMAX 16000
ifstream fi("transport.in");
ofstream fo("transport.out");
int n,k,i,vmax,s;
int saltea[NMAX];
bool posibil(int cap) {
int v=0,nt=0,i;
for(i=0;i<n;++i) {
if(v+saltea[i]>cap) {
++nt;
if(nt==k) return false;
v=0;
}
v+=saltea[i];
}
return true;
}
int cauta(int st,int dr) {
int med;
while(st<dr) {
med=st+(dr-st)/2;
if(posibil(med)) dr=med;
else st=med+1;
}
return st;
}
int main() {
fi>>n>>k;
for(i=0;i<n;++i) {
fi>>saltea[i];
s+=saltea[i];
if(saltea[i]>vmax) vmax=saltea[i];
}
fo<<cauta(vmax,s);
return 0;
}