Bhe se usi printf non puoi mica usare poi cin...
Il compilatore non può allocare un array di cui non può conoscere immediatamente la dimensione. Per fare ciò di cui hai bisogno lo devi allocare dinamicamente.

codice:
int numero;
scanf("%i",&numero);
int *array = malloc(numero * sizeof(int));
oppure in C++

codice:
int numero;
cin >> numero;
int *array = new int[numero];
Cosi avrai un puntatore a int che puoi deferenziare per utilizzarlo come un int normale.