Pagini recente » Cod sursa (job #2959188) | Cod sursa (job #1522862) | Cod sursa (job #877446) | Cod sursa (job #2974208) | Cod sursa (job #895658)
Cod sursa(job #895658)
#include <cstdio>
#include <iostream>
using namespace std;
int n,k,v[16005];
int duba(int vol)
{
int s, pas=0,i=1;
/* for(int i=1, pas=0;i<=n;i++)
{
s=0;
while(j<=n && s+v[j]<=vol) s+=v[j], j++;
pas++;
}
*/
while(i<=n)
{
s=0;
while(i<=n && s+v[i]<=vol) s+=v[i++];
pas++;
}
return pas;
}
int cb(int ls, int ld)
{
/*if(ls>ld) return ld;
int m=(ls+ld)/2;
if(duba(m)>k) return cb(m+1,ld);
else return cb(ls, m-1);
*/
int m;
while(ls < ld)
{
m=(ls+ld)/2;
if(duba(m)>k) ls=m+1;
else ld=m-1;
}
return ld;
}
int main()
{ int i;
FILE *fin=fopen("transport.in","r"),
*fout=fopen("transport.out","w");
fscanf(fin, "%d %d", &n, &k);
int ls=0, ld=0;
for(i=1;i<=n;i++)
{ fscanf(fin,"%d",&v[i]);
ld+=v[i];
if(v[i]>ls)
ls=v[i];
}
k=cb(ls, ld);
fprintf(fout,"%d",k);
return 0;
}