#include <bits/stdc++.h>
using namespace std;
int maxUnitCalculate(vector<int> req, vector<int> stock, vector<int> cost, long long budget){
long long n = req.size();
long long answer = 0;
long long low = 0, high = 1e9;
while(low <= high){
long long mid = (high + low)/2;
long long sum = 0;
for (int j = 0; j < n; j++){
long long temp = (req[j] * mid )-stock[j];
if(temp < 0) temp = 0;
sum += (temp * cost[j]);
}
if(sum <= budget){
answer = mid;
low = mid + 1;
}
else {
high = mid-1;
}
}
return answer;
}
int main() {
// your code goes here
vector<int> req = {1, 2};
vector<int> stock = {0, 1};
vector<int> cost = {1, 1};
cout << maxUnitCalculate(req, stock, cost, 5);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWF4VW5pdENhbGN1bGF0ZSh2ZWN0b3I8aW50PiByZXEsIHZlY3RvcjxpbnQ+IHN0b2NrLCB2ZWN0b3I8aW50PiBjb3N0LCBsb25nIGxvbmcgYnVkZ2V0KXsKCWxvbmcgbG9uZyBuID0gcmVxLnNpemUoKTsKCQoJbG9uZyBsb25nIGFuc3dlciA9IDA7CgkKCWxvbmcgbG9uZyBsb3cgPSAwLCBoaWdoID0gMWU5OwoJd2hpbGUobG93IDw9IGhpZ2gpewoJCWxvbmcgbG9uZyBtaWQgPSAoaGlnaCArIGxvdykvMjsKCQkKCQlsb25nIGxvbmcgc3VtID0gMDsKCQlmb3IgKGludCBqID0gMDsgaiA8IG47IGorKyl7CgkJCWxvbmcgbG9uZyB0ZW1wID0gKHJlcVtqXSAqIG1pZCApLXN0b2NrW2pdOwoJCQlpZih0ZW1wIDwgMCkgdGVtcCA9IDA7CgkJCQoJCQlzdW0gKz0gKHRlbXAgKiBjb3N0W2pdKTsKCQkJCgkJfQoJCQoJCWlmKHN1bSA8PSBidWRnZXQpewoJCQlhbnN3ZXIgPSBtaWQ7CgkJCWxvdyA9IG1pZCArIDE7CgkJfQoJCWVsc2UgewoJCQloaWdoID0gbWlkLTE7CgkJfQoJfQoJCglyZXR1cm4gYW5zd2VyOwoJCgkKCQp9CgppbnQgbWFpbigpIHsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCXZlY3RvcjxpbnQ+IHJlcSA9IHsxLCAyfTsKCXZlY3RvcjxpbnQ+IHN0b2NrID0gezAsIDF9OwoJdmVjdG9yPGludD4gY29zdCA9IHsxLCAxfTsKCQoJY291dCA8PCBtYXhVbml0Q2FsY3VsYXRlKHJlcSwgc3RvY2ssIGNvc3QsIDUpOwoJCgkKCXJldHVybiAwOwp9