Pagini recente » Cod sursa (job #1823357) | Cod sursa (job #3190276) | Cod sursa (job #1601410) | Cod sursa (job #557306) | Cod sursa (job #2770920)
// Transport.cpp : This file contains the 'main' function. Program execution begins and ends there.
//
#include <iostream>
#include <fstream>
#pragma warning(disable: 4996)
#define DIM 16006
using namespace std;
FILE* fin, * fout;
int N, A[DIM], K;
int C;
static inline void Read()
{
fscanf(fin, "%d %d", &N, &K);
for (int i = 1; i <= N; i++)
fscanf(fin, "%d", &A[i]);
}
bool Condition(int x)
{
int i, nr = 0, sum = 0;
for (i = 1; i <= N; i++) {
if (sum + A[i] <= x)
sum += A[i];
else if (A[i] <= x) {
nr++;
sum = A[i];
}
else return 0;
}
nr++;
if (nr <= K)
return 1;
return 0;
/*
int ret = 0, stiva = 0;
for (int i = 1; i <= N; i++)
if (A[i] > C)
return false;
for (int i = 1; i <= N; i++)
{
if (stiva + A[i] >= C || i == N)
{
stiva = 0;
ret++;
}
stiva += A[i];
}
return (ret <= K);
*/
}
static inline void Solve()
{
// Cautare Binara discretă pe capacitatea C
int st = 1, dr = (1e9);
while (st <= dr)
{
int mij = (st + dr) / 2;
if (Condition(mij)) {
C = mij;
dr = mij - 1;
}
else
st = mij + 1;
}
fprintf(fout, "%d", C);
}
int main()
{
fin = fopen("transport.in", "r");
fout = fopen("transport.out", "w");
Read();
Solve();
fclose(fin);
fclose(fout);
return 0;
}