Răspuns :
Program C++
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("bac.txt");
int main(){
int n;
int i, j;
int v[100];
//Citire date
f>>n;
for(i=0;i<n;i++) f >> v[i];
//Sortare elemente algoritm, algoritm derivat selection sort
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
//Daca v[i] si v[j] au paritate diferita treci la elementul urmator
if(v[i]%2!=v[j]%2) continue;
//Daca numerele v[i],v[j] sunt pare sorteaza crescator
if(v[i]%2==0 && v[j]<v[i])swap(v[i],v[j]);
//Daca numerele v[i],v[j] sunt impare sorteaza descrescator
if(v[i]%2==1 && v[j]>v[i])swap(v[i],v[j]);
}
}
//Afiseaza vectorul sortat
for(i=0;i<n;i++) cout << v[i] << " ";
}
#include<iostream>
#include<fstream>
using namespace std;
int main() {
int v[100001], n = 0;
ifstream f("bac.txt");
while (f >> v[++n]);
n--;
cout << n << endl;
int sem;
do {
sem = 1;
for (int i = 1; i <= n - 1; i++)
if (v[i] % 2 == 0)
for (int j = i + 1; j <= n; j++)
if (v[j] % 2 == 0)
if (v[i] > v[j]) {
swap(v[i], v[j]);
sem = 0;
}
} while (sem != 1);
do {
sem = 1;
for (int i = 1; i <= n - 1; i++)
if (v[i] % 2 == 1)
for (int j = i + 1; j <= n; j++)
if (v[j] % 2 == 1)
if (v[i] > v[j]) {
swap(v[i], v[j]);
sem = 0;
}
} while (sem != 1);
for (int i = 1; i <= n; i++)
cout << v[i] << ' ';
return 0;
}