Pagini recente » Cod sursa (job #1418725) | Cod sursa (job #1446418) | Cod sursa (job #2866536) | Cod sursa (job #1271909) | Cod sursa (job #2117766)
#include <fstream>
using namespace std;
ifstream fin("Monede.in");
ofstream fout("Monede.out");
const int NMAX=16000;
int v[NMAX+5],n,k;
int ok(int c)
{
int tr=0,i,s=0;
for(i=1; i<=n; i++)
if(s+v[i]<=c) s=s+v[i];
else if(c<v[i])
{
return 0;
}
else
{
tr++;
s=v[i];
}
if(s>0) tr++;
if(tr<=k) return 1;
return 0;
}
int bsL(int st, int dr)
{
int med,last=-1;
while(st<=dr)
{
med=(st+dr)/2;
if(ok(med))
{
dr=med-1;
last=med;
}
else st=med+1;
}
return last;
}
int main()
{
int i,poz1,smax=0;
fin>>n>>k;
for(i=1; i<=n; i++)
{
fin>>v[i];
smax=smax+v[i];
}
fout<<bsL(1,smax);
return 0;
}