Cod sursa(job #1498606)
Utilizator | Data | 8 octombrie 2015 20:37:54 | |
---|---|---|---|
Problema | Transport | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.78 kb |
#include<cstdio>
#include<iostream>
#define m 16001
int v[m];
int main()
{
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
int n, i, cm, c, cM, m, j, s, a, r;
cin>>n>>a;
cM=0;
m=0;
for(i=1; i<=n; i++)
{
cin>>v[i];
cM+=v[i];
if(v[i]>m)
m=v[i];
}
cm=m;
while(cm<=cM)
{
c=(cm+cM)/2;
i=1;
j=0;
while(i<=n)
{
s=0;
while(s+v[i]<=c && i<=n)
{
s+=v[i];
i++;
}
j++;
}
if(j<=a)
{
cM=c-1;
r=c;
}
else
cm=c+1;
}
cout<<r;
return 0;
}