#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void customSort(vector<int>& arr) {
vector<int> positive, zeros, negative;
for (int num : arr) {
if (num > 0)
positive.push_back(num);
else if (num == 0)
zeros.push_back(num);
else
negative.push_back(num);
}
sort(positive.begin(), positive.end(), greater<int>()); // giảm dần
sort(negative.begin(), negative.end()); // tăng dần
// Ghép lại
arr.clear();
arr.insert(arr.end(), positive.begin(), positive.end());
arr.insert(arr.end(), zeros.begin(), zeros.end());
arr.insert(arr.end(), negative.begin(), negative.end());
}
void printArray(const vector<int>& arr) {
for (int num : arr)
cout << num << " ";
cout << endl;
}
int main() {
vector<int> arr = {3, -1, 0, 5, -2, 7, 4, -3};
customSort(arr);
cout << "Mang da sap xep: ";
printArray(arr);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdm9pZCBjdXN0b21Tb3J0KHZlY3RvcjxpbnQ+JiBhcnIpIHsKICAgIHZlY3RvcjxpbnQ+IHBvc2l0aXZlLCB6ZXJvcywgbmVnYXRpdmU7CgogICAgCiAgICBmb3IgKGludCBudW0gOiBhcnIpIHsKICAgICAgICBpZiAobnVtID4gMCkKICAgICAgICAgICAgcG9zaXRpdmUucHVzaF9iYWNrKG51bSk7CiAgICAgICAgZWxzZSBpZiAobnVtID09IDApCiAgICAgICAgICAgIHplcm9zLnB1c2hfYmFjayhudW0pOwogICAgICAgIGVsc2UKICAgICAgICAgICAgbmVnYXRpdmUucHVzaF9iYWNrKG51bSk7CiAgICB9CgogICAgCiAgICBzb3J0KHBvc2l0aXZlLmJlZ2luKCksIHBvc2l0aXZlLmVuZCgpLCBncmVhdGVyPGludD4oKSk7IC8vIGdp4bqjbSBk4bqnbgogICAgc29ydChuZWdhdGl2ZS5iZWdpbigpLCBuZWdhdGl2ZS5lbmQoKSk7ICAgICAgICAgICAgICAgICAvLyB0xINuZyBk4bqnbgoKICAgIC8vIEdow6lwIGzhuqFpCiAgICBhcnIuY2xlYXIoKTsKICAgIGFyci5pbnNlcnQoYXJyLmVuZCgpLCBwb3NpdGl2ZS5iZWdpbigpLCBwb3NpdGl2ZS5lbmQoKSk7CiAgICBhcnIuaW5zZXJ0KGFyci5lbmQoKSwgemVyb3MuYmVnaW4oKSwgemVyb3MuZW5kKCkpOwogICAgYXJyLmluc2VydChhcnIuZW5kKCksIG5lZ2F0aXZlLmJlZ2luKCksIG5lZ2F0aXZlLmVuZCgpKTsKfQoKdm9pZCBwcmludEFycmF5KGNvbnN0IHZlY3RvcjxpbnQ+JiBhcnIpIHsKICAgIGZvciAoaW50IG51bSA6IGFycikKICAgICAgICBjb3V0IDw8IG51bSA8PCAiICI7CiAgICBjb3V0IDw8IGVuZGw7Cn0KCmludCBtYWluKCkgewogICAgdmVjdG9yPGludD4gYXJyID0gezMsIC0xLCAwLCA1LCAtMiwgNywgNCwgLTN9OwogICAgY3VzdG9tU29ydChhcnIpOwogICAgY291dCA8PCAiTWFuZyBkYSBzYXAgeGVwOiAiOwogICAgcHJpbnRBcnJheShhcnIpOwogICAgcmV0dXJuIDA7Cn0K