fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. vector<int> solve(vector<int> &arr){
  5.  
  6. vector<int> ans;
  7.  
  8. int p=-1;
  9. int q=-1;
  10.  
  11. bool chk1=false;
  12. bool chk2=false;
  13. for(int i=0;i<arr.size();i++){
  14.  
  15. if(arr[i]>=0) chk1=true;
  16. if(arr[i]<0) chk2=true;
  17.  
  18. if(i+1<arr.size() && arr[i+1]>=0 && arr[i]<0){
  19. p=i;
  20. q=i+1;
  21. break;
  22. }
  23. }
  24.  
  25. if(chk1 || !chk2){
  26. for(int i=0;i<arr.size();i++){
  27. ans.push_back(arr[i]*arr[i]);
  28. }
  29. return ans;
  30. }
  31.  
  32. if(!chk1 || chk2){
  33. for(int i=arr.size()-1;i>=0;i--){
  34. ans.push_back(arr[i]*arr[i]);
  35. }
  36. return ans;
  37. }
  38.  
  39. // -6, -3, -1, 2, 4, 5
  40. while(p>=0 && q<arr.size()){
  41. if(abs(arr[p])<arr[q]){
  42. ans.push_back(arr[p]*arr[p]);
  43. p--;
  44. }
  45. else if(arr[q]>abs(arr[p])){
  46. ans.push_back(arr[q]*arr[q]);
  47. q++;
  48. }
  49.  
  50. }
  51.  
  52. while(p>=0){
  53. ans.push_back(arr[p]*arr[p]);
  54. p--;
  55. }
  56.  
  57. while(q<arr.size()){
  58. ans.push_back(arr[q]*arr[q]);
  59. q++;
  60. }
  61.  
  62. return ans;
  63. }
  64.  
  65.  
  66. int main() {
  67. vector<int> arr={ -6, -3, -1, 2, 4, 5};
  68.  
  69. vector<int> ans= solve(arr);
  70.  
  71. for(int &x:ans){
  72. cout<<x<<" ";
  73. }
  74. cout<<endl;
  75. }
Success #stdin #stdout 0.01s 5308KB
stdin
Standard input is empty
stdout
25 16 4 1 9 36