Pagini recente » Cod sursa (job #1980751) | Cod sursa (job #1683398) | Cod sursa (job #726352) | Cod sursa (job #311027) | Cod sursa (job #946671)
Cod sursa(job #946671)
#include<fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
const int MAX=16000;
int N,K,v[MAX],ma,s,mijl,sol;
bool verifica (int mijl);
int main()
{
int i;
in>>N>>K;
for(i=0;i<N;i++)
{
in>>v[i];
if(ma<v[i])
ma=v[i];
s+=v[i];
}
while(ma<=s)
{
mijl=(ma+s)/2;
if(!(verifica(mijl)))
ma=mijl+1;
else s=mijl-1, sol=mijl;
}
out<<sol<<'\n';
in.close();
out.close();
return 0;
}
bool verifica(int mijl)
{
int i=0, j=0, var;
while(i<=K&&j<N)
{
var=0;
while(var+v[j]<=mijl)
var+=v[j], j++;
i++;
}
if(i<=K)
return 1;
return 0;
}