Разворот

В данной задаче условия такие:

/**
 * Дано натуральное число N и последовательность из N элементов.
 * Требуется вывести эту последовательность в обратном порядке.
 *
 * Входные данные
 * В первой строке записано натуральное число N (N ≤ 103).
 * Во второй строке через пробел идут N целых чисел, по модулю не превосходящих 103 - элементы последовательности.
 *
 * Выходные данные
 * выведите заданную последовательность в обратном порядке.
 */

Эта задача решается элементарно и использованием динамических массивов.

#include <iostream>

using namespace std;

int main(){
	int N, *M;
	cin >> N;

// Теперь мы знаем размер динамического массива
	M = new int[N];
// наполняем массив данными
	for (int i = 0; i < N; ++i) {
		cin >> M[i];
	}
// Выводим данные из массва, начиная с конца
	for (int i = N; i > 0; --i){
		cout << M[i-1];
		if (i - 1 > 0) cout << " ";
	}
	return 0;
}

Ну, а если вы читали статью Освобождение памяти от динамического массива, то с легкостью можете улучшить программу.