Cod sursa(job #1417979)
| Utilizator | Data | 11 aprilie 2015 16:43:29 | |
|---|---|---|---|
| Problema | Transport | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.58 kb |
#include <cstdio>
using namespace std;
int p=0,u,mj,i,n,k,x,a[16005];
inline int trans(int x)
{
int i,nr=x+1,k=0;
for(i=1;i<=n;++i)
if(nr+a[i]<=x) nr+=a[i];
else ++k, nr=a[i];
return k;
}
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
scanf("%d%d",&n,&k);
for(i=1;i<=n;++i)
{
scanf("%d",&a[i]);
p=a[i]>p?a[i]:p;
}
u=16000*16000;
while(p<=u)
{
mj=(p+u)>>1;
x=trans(mj);
if(x<=k) u=mj-1;
else p=mj+1;
}
printf("%d\n",u+1);
return 0;
}
