#include <algorithm>
#include <iostream>
#include <limits>
#include <vector>
int main()
{
std::vector<bool> mask{0, 0, 1, 0, 1, 1, 0};
std::vector<double> vec{7.1, 1.0, 3.2, 2.0, 1.8, 5.0, 0.0};
std::vector<double> combined;
std::transform(vec.begin(), vec.end(), mask.begin(), std::back_inserter(combined),
[](double v, bool mask) { return mask ? v : std::numeric_limits<double>::max(); });
auto it = std::min_element(combined.begin(), combined.end());
std::cout << "min(combined)=" << *it << "\n";
auto index = std::distance(combined.begin(), it);
auto it_vec = vec.begin() + index;
std::cout << "min(vec)=" << *it_vec << ", index=" << index << "\n";
return 0;
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bGltaXRzPgojaW5jbHVkZSA8dmVjdG9yPgoKaW50IG1haW4oKQp7CglzdGQ6OnZlY3Rvcjxib29sPiBtYXNrezAsICAgMCwgICAxLCAgIDAsICAgMSwgICAxLCAgIDB9OwoJc3RkOjp2ZWN0b3I8ZG91YmxlPiB2ZWN7Ny4xLCAxLjAsIDMuMiwgMi4wLCAxLjgsIDUuMCwgMC4wfTsKCXN0ZDo6dmVjdG9yPGRvdWJsZT4gY29tYmluZWQ7CgkKCXN0ZDo6dHJhbnNmb3JtKHZlYy5iZWdpbigpLCB2ZWMuZW5kKCksIG1hc2suYmVnaW4oKSwgc3RkOjpiYWNrX2luc2VydGVyKGNvbWJpbmVkKSwKCQkJCSAgIFtdKGRvdWJsZSB2LCBib29sIG1hc2spIHsgcmV0dXJuIG1hc2sgPyB2IDogc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKTsgfSk7CgkKCWF1dG8gaXQgPSBzdGQ6Om1pbl9lbGVtZW50KGNvbWJpbmVkLmJlZ2luKCksIGNvbWJpbmVkLmVuZCgpKTsKCXN0ZDo6Y291dCA8PCAibWluKGNvbWJpbmVkKT0iIDw8ICppdCA8PCAiXG4iOwoJCiAgICBhdXRvIGluZGV4ID0gc3RkOjpkaXN0YW5jZShjb21iaW5lZC5iZWdpbigpLCBpdCk7CiAgICBhdXRvIGl0X3ZlYyA9IHZlYy5iZWdpbigpICsgaW5kZXg7CglzdGQ6OmNvdXQgPDwgIm1pbih2ZWMpPSIgPDwgKml0X3ZlYyA8PCAiLCBpbmRleD0iIDw8IGluZGV4IDw8ICJcbiI7CgoJcmV0dXJuIDA7Cn0=