#include <iostream>
#include <vector>
#include <bitset>
#include <algorithm>
#include <climits>
template <typename IterType>
unsigned long getValue(IterType i1, IterType i2)
{
unsigned long i = 0;
std::bitset<8 * sizeof(unsigned long)> b;
std::for_each(i1, i2, [&](int n) { b.set(i++, n);});
return b.to_ulong();
}
int main()
{
std::vector<int> v = {0, 1, 1, 0, 1, 0, 0, 1, 0, 0};
auto val = getValue(v.rbegin(), v.rend());
std::cout << val << "\n";;
auto val2 = getValue(v.begin(), v.end());
std::cout << val2;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8Yml0c2V0PgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8Y2xpbWl0cz4KCnRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyVHlwZT4KdW5zaWduZWQgbG9uZyBnZXRWYWx1ZShJdGVyVHlwZSBpMSwgSXRlclR5cGUgaTIpCnsKCXVuc2lnbmVkIGxvbmcgaSA9IDA7CiAgICBzdGQ6OmJpdHNldDw4ICogc2l6ZW9mKHVuc2lnbmVkIGxvbmcpPiBiOwoJc3RkOjpmb3JfZWFjaChpMSwgaTIsIFsmXShpbnQgbikgeyBiLnNldChpKyssIG4pO30pOwoJcmV0dXJuIGIudG9fdWxvbmcoKTsKfQoJCmludCBtYWluKCkgCnsKCXN0ZDo6dmVjdG9yPGludD4gdiA9IHswLCAxLCAxLCAwLCAxLCAwLCAwLCAxLCAwLCAwfTsKCWF1dG8gdmFsID0gZ2V0VmFsdWUodi5yYmVnaW4oKSwgdi5yZW5kKCkpOwogICAgc3RkOjpjb3V0IDw8IHZhbCA8PCAiXG4iOzsgIAogICAgYXV0byB2YWwyID0gZ2V0VmFsdWUodi5iZWdpbigpLCB2LmVuZCgpKTsKICAgIHN0ZDo6Y291dCA8PCB2YWwyOyAgCn0=