Cod sursa(job #1574546)
| Utilizator | Data | 20 ianuarie 2016 17:47:18 | |
|---|---|---|---|
| Problema | Transport | Scor | 40 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.81 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,c,nr,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;
nr=1;
c=0;
h=0;
for(i=1;i<=n&&nr<=k;i++){
h++;
if(v[i]>mij){
break;
h--;
}
c+=v[i];
if(c>mij){
c=v[i];
nr++;
if(nr>k)
h--;
}
}
if(h>=n)
dr=mij-1;
else
st=mij+1;
}
fout<<st<<"\n";
return 0;
}
