- #include <iostream> 
- #include <vector> 
-   
- using byte = unsigned char; 
-   
- std::vector<uint16_t> GetIntArrayFromByteArray(const std::vector<byte>& byteArray) 
- { 
-     const int inputSize = byteArray.size(); 
-     const bool inputIsOddCount = inputSize % 2 != 0; 
-     const int finalSize = (int)(inputSize/2.0 + 0.5); 
-     // Ignore the last odd item in loop and handle it later 
-     const int loopLength = inputIsOddCount ? inputSize - 1 : inputSize; 
-   
-     std::vector<uint16_t> intArray; 
-     // Reserve space for all items 
-     intArray.reserve(finalSize); 
-     for (int i = 0; i < loopLength; i += 2)  
-     { 
-       intArray.push_back((uint16_t)((byteArray[i] << 8) | byteArray[i + 1])); 
-     } 
-   
-     // If the input was odd-count, we still have one byte to add, along with a zero 
-     if(inputIsOddCount)  
-     { 
-       // The zero in this expression is redundant but illustrative 
-       intArray.push_back((uint16_t)((byteArray[inputSize-1] << 8) | 0)); 
-     } 
-     return intArray; 
- } 
-   
- int main() { 
- 	const std::vector<byte> numbers{2,0,0,0,1,0,0,1,4}; 
- 	const std::vector<uint16_t> result(GetIntArrayFromByteArray(numbers)); 
-   
- 	for(uint16_t num: result) { 
- 		std::cout << num << "\n"; 
- 	} 
-   
- 	return 0; 
- } 
-   
-   
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgYnl0ZSA9IHVuc2lnbmVkIGNoYXI7CgpzdGQ6OnZlY3Rvcjx1aW50MTZfdD4gR2V0SW50QXJyYXlGcm9tQnl0ZUFycmF5KGNvbnN0IHN0ZDo6dmVjdG9yPGJ5dGU+JiBieXRlQXJyYXkpCnsKICAgIGNvbnN0IGludCBpbnB1dFNpemUgPSBieXRlQXJyYXkuc2l6ZSgpOwogICAgY29uc3QgYm9vbCBpbnB1dElzT2RkQ291bnQgPSBpbnB1dFNpemUgJSAyICE9IDA7CiAgICBjb25zdCBpbnQgZmluYWxTaXplID0gKGludCkoaW5wdXRTaXplLzIuMCArIDAuNSk7CiAgICAvLyBJZ25vcmUgdGhlIGxhc3Qgb2RkIGl0ZW0gaW4gbG9vcCBhbmQgaGFuZGxlIGl0IGxhdGVyCiAgICBjb25zdCBpbnQgbG9vcExlbmd0aCA9IGlucHV0SXNPZGRDb3VudCA/IGlucHV0U2l6ZSAtIDEgOiBpbnB1dFNpemU7CiAgICAKICAgIHN0ZDo6dmVjdG9yPHVpbnQxNl90PiBpbnRBcnJheTsKICAgIC8vIFJlc2VydmUgc3BhY2UgZm9yIGFsbCBpdGVtcwogICAgaW50QXJyYXkucmVzZXJ2ZShmaW5hbFNpemUpOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsb29wTGVuZ3RoOyBpICs9IDIpIAogICAgewogICAgICBpbnRBcnJheS5wdXNoX2JhY2soKHVpbnQxNl90KSgoYnl0ZUFycmF5W2ldIDw8IDgpIHwgYnl0ZUFycmF5W2kgKyAxXSkpOwogICAgfQoKICAgIC8vIElmIHRoZSBpbnB1dCB3YXMgb2RkLWNvdW50LCB3ZSBzdGlsbCBoYXZlIG9uZSBieXRlIHRvIGFkZCwgYWxvbmcgd2l0aCBhIHplcm8KICAgIGlmKGlucHV0SXNPZGRDb3VudCkgCiAgICB7CiAgICAgIC8vIFRoZSB6ZXJvIGluIHRoaXMgZXhwcmVzc2lvbiBpcyByZWR1bmRhbnQgYnV0IGlsbHVzdHJhdGl2ZQogICAgICBpbnRBcnJheS5wdXNoX2JhY2soKHVpbnQxNl90KSgoYnl0ZUFycmF5W2lucHV0U2l6ZS0xXSA8PCA4KSB8IDApKTsKICAgIH0KICAgIHJldHVybiBpbnRBcnJheTsKfQoKaW50IG1haW4oKSB7Cgljb25zdCBzdGQ6OnZlY3RvcjxieXRlPiBudW1iZXJzezIsMCwwLDAsMSwwLDAsMSw0fTsKCWNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQxNl90PiByZXN1bHQoR2V0SW50QXJyYXlGcm9tQnl0ZUFycmF5KG51bWJlcnMpKTsKCQoJZm9yKHVpbnQxNl90IG51bTogcmVzdWx0KSB7CgkJc3RkOjpjb3V0IDw8IG51bSA8PCAiXG4iOwoJfQoJCglyZXR1cm4gMDsKfQoK