#include <vector>
#include <string>
#include <algorithm>
#include <iostream>
#include <iomanip>
using namespace std;
vector<string> v{ "abvsd","hdvjh","hvdsg","dvass","dvahj","dv","dvar","dvb","jhkfb"};
template <typename RandomIt>
std::pair<RandomIt, RandomIt>
FindStartsWith(RandomIt range_begin, RandomIt range_end,
const std::string& prefix)
{
return std::equal_range(range_begin,range_end,prefix,
[&prefix](const std::string& a,const std::string& b)
{
return a.compare(0,prefix.length(),b.substr(0,prefix.length())) < 0;
});
}
int main(int argc, const char * argv[])
{
sort(v.begin(),v.end());
auto f = FindStartsWith(v.begin(),v.end(),"dva");
for(auto i = f.first; i != f.second; ++i)
cout << *i << endl;
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2ZWN0b3I8c3RyaW5nPiB2eyAiYWJ2c2QiLCJoZHZqaCIsImh2ZHNnIiwiZHZhc3MiLCJkdmFoaiIsImR2IiwiZHZhciIsImR2YiIsImpoa2ZiIn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgUmFuZG9tSXQ+CnN0ZDo6cGFpcjxSYW5kb21JdCwgUmFuZG9tSXQ+CkZpbmRTdGFydHNXaXRoKFJhbmRvbUl0IHJhbmdlX2JlZ2luLCBSYW5kb21JdCByYW5nZV9lbmQsCiAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBwcmVmaXgpCnsKICAgIHJldHVybiBzdGQ6OmVxdWFsX3JhbmdlKHJhbmdlX2JlZ2luLHJhbmdlX2VuZCxwcmVmaXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJnByZWZpeF0oY29uc3Qgc3RkOjpzdHJpbmcmIGEsY29uc3Qgc3RkOjpzdHJpbmcmIGIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuY29tcGFyZSgwLHByZWZpeC5sZW5ndGgoKSxiLnN1YnN0cigwLHByZWZpeC5sZW5ndGgoKSkpIDwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwp9CgppbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqIGFyZ3ZbXSkKewogICAgc29ydCh2LmJlZ2luKCksdi5lbmQoKSk7CiAgICBhdXRvIGYgPSBGaW5kU3RhcnRzV2l0aCh2LmJlZ2luKCksdi5lbmQoKSwiZHZhIik7CiAgICBmb3IoYXV0byBpID0gZi5maXJzdDsgaSAhPSBmLnNlY29uZDsgKytpKQogICAgICAgIGNvdXQgPDwgKmkgPDwgZW5kbDsKfQoK