Pagini recente » Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #739640) | Monitorul de evaluare | Cod sursa (job #3328335)
#include <bits/stdc++.h>
#define int long long
using namespace std;
ifstream fin ("transport.in");
ofstream fout ("transport.out");
int v[16061];
int n,k;
int Functie(int C){
int ans = 0;
int sum = 0;
for (int i=1;i<=n;++i){
if (v[i]>C) return 1e9;
if (sum+v[i]<=C) sum += v[i];
else{
ans++;
sum = v[i];
}
}
if (sum!=0) ans++;
return ans;
}
int CautBin_cu_pas(){ // cel mai mare C astfel incat sa ia mai mult de k costuri
int ans = 0;
for (int pas=(1LL<<60);pas>0;pas/=2){
int M = ans+pas; // M de la caut bin obisnuita ("Mijlocul")
int loc = Functie(M);
if (loc>k) ans += pas;
}
return ans;
}
signed main()
{
fin >> n >> k;
for (int i=1;i<=n;++i){
fin >> v[i];
}
fout << CautBin_cu_pas()+1; // ca sa am C min care e bun
return 0;
}