Pagini recente » Cod sursa (job #891657) | Rating Tarlea Otilia (tarlea_otilia) | Cod sursa (job #384204) | Istoria paginii utilizator/mariejeanne | Cod sursa (job #1548992)
//
// main.cpp
// Transport
//
// Created by Ioana Teoc on 12/11/15.
// Copyright (c) 2015 Ioana Teoc. All rights reserved.
//
#include <iostream>
#include <fstream>
using namespace std;
int N, K, V[16000], sum;
/*
*/
bool solution(int capacity){
int noOfTransports= 0, transportSum = 0;
for (int i = 0; i < N; i++) {
if(V[i] > capacity){
return false;
}
if(transportSum + V[i] >= capacity){
noOfTransports++;
transportSum = V[i];
}
else{
transportSum +=V[i];
}
}
return noOfTransports < K;
}
int search(){
int infLim = 0, supLim = sum, mid;
while(infLim < supLim){
mid = (infLim + supLim)/2;
if(solution(mid)){
supLim = mid;
}
else{
infLim = mid + 1;
}
}
return infLim;
}
int main(int argc, const char * argv[])
{
ifstream in("transport.in");
ofstream out("transport.out");
int i;
if(in.is_open()){
in>>N>>K;
for(i = 0; i < N; i++){
in>>V[i];
sum += V[i];
}
int res = search();
out<<res;
}
else{
cout << "Unable to open file";
}
return 0;
}