조건:
- 홀수는 짝수보다 항상 우선순위가 높다.
- 같은 조건에 있는 자연수 중, 큰 수일수록 우선순위가 높다.
#include <iostream>
#include <vector>
using namespace std;
struct compare {
bool operator()(const int &data, const int &b) {
if (data % 2 != 0 && b % 2 != 0) {
return data > b;
} else if (data % 2 != 0) {
return true;
} else if (b % 2 != 0) {
return false;
} else {
return data > b;
}
}
};
class unsortedSeqPQ {
private:
vector<int> seq;
public:
bool empty() {
return (seq.size() == 0);
}
void insert(int data) {
seq.push_back(data);
}
int min() {
if (empty())
return -1;
compare C;
int result = seq[0];
for (int i = 0; i < seq.size(); ++i) {
if (C(seq[i], result)) {
result = seq[i];
}
}
return result;
}
void removeMin() {
if (empty())
return;
compare C;
int minIdx = 0;
for (int i = 0; i < seq.size(); ++i) {
if (C(seq[i], seq[minIdx])) {
minIdx = i;
}
}
seq.erase(seq.begin() + minIdx);
}
};
int main() {
unsortedSeqPQ uq;
int T;
cin >> T;
while (T--) {
int N;
cin >> N;
for (int i = 0; i < N; ++i) {
int e;
cin >> e;
uq.insert(e);
}
for (int i = 0; i < N; ++i) {
cout << uq.min() << ' ';
uq.removeMin();
}
}
return 0;
}