Pagini recente » Cod sursa (job #1232582) | Cod sursa (job #354070) | Cod sursa (job #148402) | Cod sursa (job #1493413) | Cod sursa (job #1022393)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("transport.in");
ofstream g ("transport.out");
int n,k;
int vol[16001];
int check (int cnt)
{
int drumuri=1,salt=0,i;
for (i=1;i<=n;i++)
if(salt+vol[i]<=cnt)
salt+=vol[i];
else
{
drumuri++;
salt=0;
i--;
}
if (drumuri<=k)
return 1;
return 0;
}
int bin_search(int left, int right)
{
int mid;
if(left>right)
return left;
mid= (left+right)/2;
if(check(mid))
return bin_search(left,mid-1);
else
return bin_search(mid+1,right);
}
int main()
{
f>>n>>k;
int s, maxim,i;
s=0;
maxim=0;
for (i=1;i<=n;i++)
{
f>>vol[i];
s+=vol[i];
if(vol[i]>maxim)
maxim=vol[i];
}
g<<bin_search(maxim,s);
f.close();
g.close();
return 0;
}