#include <iostream>
#include <utility>
#include <vector>
using namespace std;
#define ARR_SIZE(x) (sizeof(x)/sizeof(*x))
vector<int> lepsza(int arr[], int size)
{
vector<int> ret;
ret.reserve(size*1.5);
for(int i = 0; i < size; i++){
ret.push_back(arr[i]);
if(arr[i]%2){
ret.push_back(arr[i]);
ret.push_back(arr[i]);
}
}
ret.shrink_to_fit();
return ret;
}
pair<int*,int> gorsza(int arr[], int size)
{
pair<int*,int> ret = { nullptr, 0 };
for(int i = 0; i < size; i++){
ret.second += 1 + (arr[i]&1 ? 2 : 0);
}
ret.first = new int[ret.second];
for(int i = 0, j = 0; i < size; i++){
ret.first[j++] = arr[i];
if(arr[i]%2){
ret.first[j++] = arr[i];
ret.first[j++] = arr[i];
}
}
return ret;
}
int main(void)
{
int arr[] = {1,2,3,5,7,8,6,4};
auto p = gorsza(arr,ARR_SIZE(arr));
auto v = lepsza(arr,ARR_SIZE(arr));
cout << "size: " << p.second << endl;
for(int i = 0; i < p.second; i++){
cout << p.first[i] << ", ";
}
cout << endl;
delete[] p.first;
cout << "size: " << v.size() << endl;
for(int n : v){
cout << n << ", ";
}
cout << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dXRpbGl0eT4KI2luY2x1ZGUgPHZlY3Rvcj4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIEFSUl9TSVpFKHgpIChzaXplb2YoeCkvc2l6ZW9mKCp4KSkKCnZlY3RvcjxpbnQ+IGxlcHN6YShpbnQgYXJyW10sIGludCBzaXplKQp7Cgl2ZWN0b3I8aW50PiByZXQ7CglyZXQucmVzZXJ2ZShzaXplKjEuNSk7Cglmb3IoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXsKCQlyZXQucHVzaF9iYWNrKGFycltpXSk7CgkJaWYoYXJyW2ldJTIpewoJCQlyZXQucHVzaF9iYWNrKGFycltpXSk7CgkJCXJldC5wdXNoX2JhY2soYXJyW2ldKTsKCQl9Cgl9CglyZXQuc2hyaW5rX3RvX2ZpdCgpOwoJcmV0dXJuIHJldDsKfQoKcGFpcjxpbnQqLGludD4gZ29yc3phKGludCBhcnJbXSwgaW50IHNpemUpCnsKCXBhaXI8aW50KixpbnQ+IHJldCA9IHsgbnVsbHB0ciwgMCB9OwoJZm9yKGludCBpID0gMDsgaSA8IHNpemU7IGkrKyl7CgkJcmV0LnNlY29uZCAgKz0gMSArIChhcnJbaV0mMSA/IDIgOiAwKTsKCX0KCglyZXQuZmlyc3QgPSBuZXcgaW50W3JldC5zZWNvbmRdOwoKCWZvcihpbnQgaSA9IDAsIGogPSAwOyBpIDwgc2l6ZTsgaSsrKXsKCQlyZXQuZmlyc3RbaisrXSA9IGFycltpXTsKCQlpZihhcnJbaV0lMil7CgkJCXJldC5maXJzdFtqKytdID0gYXJyW2ldOwoJCQlyZXQuZmlyc3RbaisrXSA9IGFycltpXTsKCQl9Cgl9CgoJcmV0dXJuIHJldDsKfQoKaW50IG1haW4odm9pZCkKewoJaW50IGFycltdID0gezEsMiwzLDUsNyw4LDYsNH07CgoJYXV0byBwID0gZ29yc3phKGFycixBUlJfU0laRShhcnIpKTsKCWF1dG8gdiA9IGxlcHN6YShhcnIsQVJSX1NJWkUoYXJyKSk7CgoJY291dCA8PCAic2l6ZTogIiA8PCBwLnNlY29uZCA8PCBlbmRsOwoJZm9yKGludCBpID0gMDsgaSA8IHAuc2Vjb25kOyBpKyspewoJCWNvdXQgPDwgcC5maXJzdFtpXSA8PCAiLCAiOwoJfQoJY291dCA8PCBlbmRsOwoJZGVsZXRlW10gcC5maXJzdDsKCgljb3V0IDw8ICJzaXplOiAiIDw8IHYuc2l6ZSgpIDw8IGVuZGw7Cglmb3IoaW50IG4gOiB2KXsKCQljb3V0IDw8IG4gPDwgIiwgIjsKCX0KCWNvdXQgPDwgZW5kbDsKCn0JCgogICAgCg==
size: 16
1, 1, 1, 2, 3, 3, 3, 5, 5, 5, 7, 7, 7, 8, 6, 4,
size: 16
1, 1, 1, 2, 3, 3, 3, 5, 5, 5, 7, 7, 7, 8, 6, 4,