fork(1) download
  1. #include <iostream>
  2. #include <utility>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. #define ARR_SIZE(x) (sizeof(x)/sizeof(*x))
  8.  
  9. vector<int> lepsza(int arr[], int size)
  10. {
  11. vector<int> ret;
  12. ret.reserve(size*1.5);
  13. for(int i = 0; i < size; i++){
  14. ret.push_back(arr[i]);
  15. if(arr[i]%2){
  16. ret.push_back(arr[i]);
  17. ret.push_back(arr[i]);
  18. }
  19. }
  20. ret.shrink_to_fit();
  21. return ret;
  22. }
  23.  
  24. pair<int*,int> gorsza(int arr[], int size)
  25. {
  26. pair<int*,int> ret = { nullptr, 0 };
  27. for(int i = 0; i < size; i++){
  28. ret.second += 1 + (arr[i]&1 ? 2 : 0);
  29. }
  30.  
  31. ret.first = new int[ret.second];
  32.  
  33. for(int i = 0, j = 0; i < size; i++){
  34. ret.first[j++] = arr[i];
  35. if(arr[i]%2){
  36. ret.first[j++] = arr[i];
  37. ret.first[j++] = arr[i];
  38. }
  39. }
  40.  
  41. return ret;
  42. }
  43.  
  44. int main(void)
  45. {
  46. int arr[] = {1,2,3,5,7,8,6,4};
  47.  
  48. auto p = gorsza(arr,ARR_SIZE(arr));
  49. auto v = lepsza(arr,ARR_SIZE(arr));
  50.  
  51. cout << "size: " << p.second << endl;
  52. for(int i = 0; i < p.second; i++){
  53. cout << p.first[i] << ", ";
  54. }
  55. cout << endl;
  56. delete[] p.first;
  57.  
  58. cout << "size: " << v.size() << endl;
  59. for(int n : v){
  60. cout << n << ", ";
  61. }
  62. cout << endl;
  63.  
  64. }
  65.  
  66.  
  67.  
Success #stdin #stdout 0s 3432KB
stdin
Standard input is empty
stdout
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,