Pagini recente » Cod sursa (job #2867414) | Cod sursa (job #2605640) | Cod sursa (job #1064083) | Cod sursa (job #2901027) | Cod sursa (job #2255528)
#include <fstream>
#include <stack>
#include <math.h>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
stack<int> s;
int n;
int k;
int transport(int val)
{
int cnt;
stack<int> copy_stack;
copy_stack=s;
int copy_k=0;
int stack_size = copy_stack.size();
while(copy_k<k && stack_size>0)
{
cnt=0;
while(cnt+copy_stack.top()<= val && stack_size>0)
{
cnt+=copy_stack.top();
copy_stack.pop();
stack_size--;
}
copy_k++;
}
return (copy_k<k);
}
int transport_binary_search(int start,int i)
{
if(i==0)
return start;
else if(transport(start+pow(2,i)))
return transport_binary_search(start,i-1);
else
return transport_binary_search(pow(2,i),i-1);
}
int main()
{
f>>n;
f>>k;
for(int i=0;i<n;i++)
{
int nr;
f>>nr;
s.push(nr);
}
g<<transport_binary_search(0,27);
}