Range based for بر روی آرایه استاتیک و container ها عمل می کنه.
راه حل اول که آرایه دینامیک را به استاتیک تبدیل کنید.
راه حل دوم یک container بر روی داده ها ایجاد کنید.
int *x, n;
x = new int[sizeof(int)*n];
vector<int> x_(x, x + n);
for (auto &i : x_){
cin >> i;
}