Pagini recente » Cod sursa (job #2800443) | Cod sursa (job #446606) | Cod sursa (job #362614) | Cod sursa (job #16956) | Cod sursa (job #1185527)
#include <cstdio>
using namespace std;
int v[16001];
int main()
{
FILE *fin, *fout;
fin=fopen("transport.in", "r");
fout=fopen("transport.out", "w");
int suma=0, n, i, l1, l2, k, sumap=0, ks, mij;
fscanf(fin, "%d%d", &n, &k);
for(i=1;i<=n;i++)
{
fscanf(fin, "%d", &v[i]);
suma=suma+v[i];
}
l1=1;
l2=suma;
while(l1<l2)
{
ks=0;
mij=(l1+l2)/2;
sumap=0;
for(i=1;i<=n;i++)
{
if(v[i]>mij)
{
ks=k+1;
}else if(sumap+v[i]>mij)
{
ks++;
sumap=v[i];
}
else sumap=sumap+v[i];
}
ks++;
if(ks>=k)
l1=mij+1;
else l2=mij-1;
}
fprintf(fout, "%d", mij);
return 0;
}