Pagini recente » Cod sursa (job #2723759) | Cod sursa (job #1605712) | Cod sursa (job #977542) | Cod sursa (job #1728912) | Cod sursa (job #3152663)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int v[16005];
int n,k;
bool verif(int c){
long long vol=0;
for(int i=1;i<=n;i++){
if(k>0){
if(vol<c){
vol=vol+v[i];
if(vol>c){
k--;
vol=v[i];
}
else if(vol==c){
k--;
vol=0;
}
}
else if(vol>c ){
k--;
vol=v[i];
}
else if(vol==c){
k--;
vol=0;
}
}
else{
if(vol<c){
vol=vol+v[i];
if(vol>c ){
return false;
}
else if(vol==c && i!=n){
return false;
}
}
else if(vol>c ){
return false;
}
else if(vol==c && i!=n){
return false;
}
}
}
return true;
}
int cautbin(int c){
int st=1;
int dr= 16005;
int predc=16005;
while(st<=dr){
int c=(st+dr)/2;
if(verif(c)){
predc=min(c,predc);
dr=c-1;
}
else {
st=c+1;
}
}
return predc;
}
int main()
{
fin>>n>>k;
for(int i=1;i<=n;i++){
fin>>v[i];
}
fout<<cautbin(c);
return 0;
}