Pagini recente » Cod sursa (job #2966572) | Cod sursa (job #2540471) | Cod sursa (job #2239429) | Borderou de evaluare (job #2016071) | Cod sursa (job #3279304)
#include<iostream>
#include<fstream>
using namespace std;
int n,k,d;
int ok(int v[]){
int c=0,nr=0;
for(int i=0;i<n;i++){
if(c+v[i]<=d){c+=v[i];}
else{c=v[i];nr++;}
}
return (nr+1);
}
int main(){
ifstream in("transport.in");ofstream out("transport.out");
int s=0,m=0,a;in>>n>>k;int v[n];
for(int i=0;i<n;i++){in>>v[i];if(v[i]>m){m=v[i];}s+=v[i];}
while(m<s){d=(m+s)/2;
if(ok(v)>k){m=d+1;}
else{a=d;s=d-1;}
}out<<a;
in.close();out.close();
return 0;
}