Cod sursa(job #2794233)
Utilizator | Data | 4 noiembrie 2021 15:25:15 | |
---|---|---|---|
Problema | Transport | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.83 kb |
#include <fstream>
using namespace std;
int v[500001];
int main()
{
ifstream cin("transport.in");
ofstream cout("transport.out");
int n,k,i,maxi=0,l,nrd,val,dr,st,mij;
long long s=0;
cin>>n>>k;
for(i=1;i<=n;i++){
cin>>v[i];
if(v[i]>maxi)
maxi=v[i];
s=s+v[i];
}
dr=s;
st=maxi;
while(st<=dr){
mij=(st+dr)/2;
l=0;
nrd=1;
for(i=1;i<=n;i++){
if(l+v[i]<=mij){
l=l+v[i];
}
else{
nrd++;
l=v[i];
}
}
// if(l!=0)
// nrd++;
if(nrd>k){
st=mij+1;
}
else{
val=mij;
dr=mij-1;
}
}
cout<<val;
return 0;
}