Pagini recente » Cod sursa (job #2622590) | Cod sursa (job #1201946) | Cod sursa (job #2942514) | Cod sursa (job #2154137) | Cod sursa (job #1026719)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n,k;
int v[16001];
int last;
bool up;
bool transports(int quant)
{
int i,ctr=0;
int temp=0;
for(i=0;i<n;i++)
{
if(temp+v[i]<=quant)
{
temp+=v[i];
}
else
{
temp = 0;
ctr++;
i--;
}
if(i==n-1) ctr++;
if(ctr>k) return false;
}
return true;
}
int find_min(int low,int high)
{
int piv = (low+high)/2;
if(high==low) return last;
if(transports(piv))
{
last = piv;
return find_min(low,piv);
}
else
{
return find_min(piv+1,high);
}
}
int main()
{
int i;
fin>>n>>k;
for(i=0;i<n;i++)
fin>>v[i];
int max=0,s=0;
for(i=0;i<n;i++)
{
s+=v[i];
if(v[i]>max) max=v[i];
}
fout<<find_min(max,s);
return 0;
}