Răspuns:
#include <iostream>
using namespace std;
int main(void)
{
int n, i, cnt=0, aux, fv[10000] = {0};
cin >> n;
int *v = new int[n];
for(i = 0; i < n; i++) {
cin >> aux;
fv[aux]++;
}
for(i = 0; i <= 10000; i++) {
if(!fv[i]) {
continue;
} else if(fv[i] == 2) {
v[n/2 - cnt - 1] = v[n/2 + cnt] = i;
cnt++;
} else {
cout << -1;
return 0;
}
}
for(i = 0; i < n; i++)
cout << v[i] << ' ';
return 0;
}
Explicație:
1. Cred ca nu ai introdus toate restrictiile, fiindca nu se precizeaza cat de mari pot fi numerele din vector, asa ca am considerat 10000 maximul.
2. Te las pe tine sa pui ofstream si ifstream pentru fisier, eu am facut cu cin si cout.
3. Cand ai spus numere "descrescatoare", am considerat ca numerele nu pot fi egale (de exemplu, 3 3 2 2 3 3 va fi un vector invalid).
Oricum, sper ca te-am ajutat la aceasta problema!