Pagini recente » Cod sursa (job #132244) | Cod sursa (job #206130) | Cod sursa (job #2414257) | Cod sursa (job #593521) | Cod sursa (job #1325720)
#include <cstdio>
#include <fstream>
#define nmax 16005
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int v[nmax],n,k,sol;
bool verify(int p)
{
int i;
int x=0,y=0;
for (i=1;i<=n;i++)
if (v[i]>p) return false;
x=1;
for (i=1;i<=n;i++) {
if (v[i]+y<=p) {
y+=v[i];
} else {
y=v[i];
x++;
}
}
if (x<=k) return true;
return false;
}
int main()
{
int i,j;
f>>n>>k;
for (i=1;i<=n;i++)
f>>v[i];
int st=1;
int dr=1<<30;
int mijl;
while (st<=dr) {
mijl=(st+dr)>>1;
if (verify(mijl)==true) {
dr=mijl-1;
sol=mijl;
} else {
st=mijl+1;
}
}
g<<sol;
return 0;
}