class Solution {
public:
vector<int> sortedSquares(vector<int>& arr) {
int n = arr.size();
vector<int> squares(n);
int highestIdx = n-1;
int l=0, r=n-1;
while(l <= r) {
int leftSquare = pow(arr[l], 2);
int rightSquare = pow(arr[r], 2);
if(leftSquare >= rightSquare) {
squares[highestIdx--] = leftSquare;
l++;
}
else {
squares[highestIdx--] = rightSquare;
r--;
}
}
return squares;
}
};