Pagini recente » Cod sursa (job #320708) | Borderou de evaluare (job #1830519) | Cod sursa (job #1235554) | Cod sursa (job #90256) | Cod sursa (job #3330867)
// Ilie "The-Winner" Dumitru
// Dumnezeu sa o ierte
#include<bits/stdc++.h>
#define sz(x) ((int)(x).size())
#define all(x) (x).begin(), (x).end()
#define err(...) fprintf(stderr, __VA_ARGS__)
using ll=long long;
using dbl=long double;
constexpr int NMAX=16'005;
constexpr ll MOD=1'000'000'007;
int N, K;
int v[NMAX];
bool doable(int x)
{
int i, s, k=1;
for(i=s=0;i<N;++i)
{
if(s+v[i]>x)
{
s=0;
++k;
}
s+=v[i];
}
return k<=K;
}
int main()
{
FILE* f=fopen("transport.in", "r"), *g=fopen("transport.out", "w");
int i, l=-1, r=NMAX*NMAX, mid;
fscanf(f, "%d%d", &N, &K);
for(i=0;i<N;++i)
fscanf(f, "%d", v+i);
do
{
mid=l+((r-l)>>1);
if(doable(mid))
r=mid;
else
l=mid;
}while(r-l>1);
fprintf(g, "%d\n", r);
fclose(f);
fclose(g);
return 0;
}