Pagini recente » Cod sursa (job #706626) | Cod sursa (job #2299726) | Cod sursa (job #2849797) | Cod sursa (job #1356782) | Cod sursa (job #472391)
Cod sursa(job #472391)
// Transport.cpp : Defines the entry point for the console application.
//
//#include "stdafx.h"
#include "stdio.h"
FILE *f=fopen("transport.in", "r");
FILE *g=fopen("transport.out", "w");
int n, k;
int v[16001];
int sum, max;
void read()
{
fscanf(f, "%d%d", &n, &k);
for (int i=1; i<=n; i++)
{
fscanf(f, "%d", &v[i]);
sum+=v[i];
if (v[i]>max) max=v[i];
}
}
int ok(int x)
{
int dx=0, cx=x, nr=0;
for (int i=1; i<=n; i++)
{
if (v[i]+dx<=cx)
dx+=v[i];
else
{
dx=v[i];
nr++;
}
}
if (nr+1<=k) return 1;
else
return -1;
}
void binary(int x, int y)
{
int lo=x, hi=y;
int mid=0;
while (hi-lo>0)
{
mid=lo+(hi-lo)/2;
if (ok(mid)==-1) lo=mid+1;
else hi=mid-1;
}
mid=lo+(hi-lo)/2;
if (ok(mid)==1)
{
fprintf(g, "%d", mid);
}
else
if (ok(mid+1)==1)
fprintf(g, "%d", mid+1);
}
void program()
{
binary(max, sum);
}
int main()
{
read();
program();
return 0;
}