Pagini recente » Cod sursa (job #3168299) | Cod sursa (job #2458075) | Cod sursa (job #2661452) | Cod sursa (job #1944961) | Cod sursa (job #2231291)
#include <iostream>
#include <fstream>
using namespace std;
int n,k,sir[16001];
int afla_nr_de_transporturi(int capacitate){
int transport=0,rez=0;
for(int i=1;i<=n;i++){
if(transport+sir[i]<=capacitate){
transport=transport+sir[i];
}else{
rez++;
transport=sir[i];
}
}
if(transport!=0){
rez++;
}
return rez;
}
int main() {
ifstream f("transport.in");
ofstream g("transport.out");
f>>n>>k;
int maxim=0;
for(int i=1;i<=n;i++) {
f>>sir[i];
if(maxim<sir[i]){
maxim=sir[i];
}
}
int stanga=maxim,dreapta=16000,mijloc,nr_transp,sol;
while(stanga<=dreapta){
mijloc=(stanga+dreapta)/2;
nr_transp=afla_nr_de_transporturi(mijloc);
if(nr_transp<=k){
sol=mijloc;
dreapta=mijloc-1;
}else{
stanga=mijloc+1;
}
}
g<<sol;
f.close();
g.close();
}