Cod sursa(job #1574514)
| Utilizator | Data | 20 ianuarie 2016 17:23:41 | |
|---|---|---|---|
| Problema | Transport | Scor | 40 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.74 kb |
# include <fstream>
# define DIM 16010
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int v[DIM];
long long s,n,k,i,st,dr,mij,poz,c,nrc,h;
int main () {
fin>>n>>k;
for(i=1;i<=n;i++){
fin>>v[i];
s+=v[i];
}
st=1;
dr=s/k+k;
while(st<=dr){
mij=(st+dr)/2;
poz=1;
c=0;
nrc=1;
h=0;
while(nrc<=k&&v[poz]<=mij){
c=0;
while(c+v[poz]<=mij&&poz<=n){
c+=v[poz];
poz++;
h++;
}
nrc++;
}
if(h>=n)
dr=mij-1;
else
st=mij+1;
}
fout<<st<<"\n";
return 0;
}
