Cod sursa(job #1871424)
| Utilizator | Data | 7 februarie 2017 13:04:37 | |
|---|---|---|---|
| Problema | Transport | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.79 kb |
#include<fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int n,m,v[100000],ok,st,dr,mid,i,k,t,x,alfa,maxim,s,c;
int main(){
in>>n>>k;
for( i = 1; i <= n; i ++ ){
in >> v[i];
if(v[i]>maxim){
maxim=v[i];
}
s=s+v[i];
}
st=maxim;
dr=s;
while(st<=dr){
mid=(st+dr)/2;
x=1;
c=0;
for(i=1;i<=n;i++){
if(c+v[i]<=mid){
c=c+v[i];
}
else{
c=v[i];
x++;
}
}
if(x>k){
st=mid+1;
}
else{
dr=mid-1;
}
alfa=st;
}
out<<alfa;
return 0;
}
