#include <iostream>
#include <vector>
std::vector<int> productExceptSelf(const std::vector<int>& nums) {
int n = nums.size();
std::vector<int> result(n, 1);
int left_product = 1;
for (int i = 0; i < n; ++i) {
result[i] *= left_product;
left_product *= nums[i];
}
int right_product = 1;
for (int i = n - 1; i >= 0; --i) {
result[i] *= right_product;
right_product *= nums[i];
}
return result;
}
int main() {
std::vector<int> nums = {1, 2, 3, 4};
std::vector<int> result = productExceptSelf(nums);
std::cout << "Resultant Array: ";
for (int num : result) {
std::cout << num << " ";
}
return 0;
}