Cod sursa(job #2772523)
| Utilizator | Data | 1 septembrie 2021 14:39:46 | |
|---|---|---|---|
| Problema | Transport | Scor | 80 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.83 kb |
#include<fstream>
using namespace std;
long long int v[16000];
int main(){
ifstream in("transport.in");
ofstream out("transport.out");
long long int n,k,st=0,dr=0,raspuns;
in>>n>>k;
for(long long int i=1;i<=n;i++){
in>>v[i];
dr+=v[i];
if(st<v[i]){
st=v[i];
}
}
while(st+1<dr){
long long int mij=(st+dr)/2,l=0,p=0;
for(long long int i=1;i<=n;i++){
if(l+v[i]<=mij){
l+=v[i];
}else{
l=v[i];
p++;
}
}
p++;
if(p<k){
dr=mij;
}else{
if(p==k){
raspuns=mij;
dr=mij;
}else{
st=mij;
}
}
}
out<<raspuns;
}
