Pagini recente » Cod sursa (job #2931182) | Cod sursa (job #9399) | Cod sursa (job #2163824)
#include <iostream>
#include <fstream>
#include <vector>
#define C(i) Condition(i)
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int N,K;
vector<int> V;
bool Condition(int x)
{
int s1=0,i=0,nr=0;
bool result=true;
while(i<N && nr<=K)
{
s1=0;
while(s1+V[i]<=x && i<N) s1+=V[i],i++;
nr++;
if(nr>K) result=false;
}
return result;
}
int BinSearch(int l,int r)
{
int m=(l+r)/2;
if(C(m) && !C(m-1)) return m;
else
{
if(C(m-1)) return BinSearch(l,m-1);
if(!C(m)) return BinSearch(m+1,r);
}
return m;
}
int main()
{
f>>N>>K;
V.resize(N);
int Max=0,S=0;
for(auto &i:V)
{
f>>i;
Max=max(Max,i);
S+=i;
}
g<<BinSearch(Max,S);
f.close(); g.close();
return 0;
}