#include <iostream>
#include <vector>
#include <unordered_map>
#include <set>
using namespace std;
class Solution {
public:
vector<int> rearrangeBarcodes(vector<int>& barcodes) {
unordered_map<int, int> counts;
for (const auto& b : barcodes) {
++counts[b];
}
struct KV {
int code;
int count;
bool operator < (const KV& other) const {
if (count == other.count) {
return code < other.code;
}
return count < other.count;
}
};
set<KV> s;
for (const auto& kv : counts) {
s.insert({kv.first, kv.second});
}
vector<int> res;
res.reserve(barcodes.size());
while (s.size() > 0) {
auto kv_min = *(prev(s.end()));
s.erase(prev(s.end()));
}
return res;
}
};
int main() {
// your code goes here
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KI2luY2x1ZGUgPHNldD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpjbGFzcyBTb2x1dGlvbiB7CnB1YmxpYzoKICAgIHZlY3RvcjxpbnQ+IHJlYXJyYW5nZUJhcmNvZGVzKHZlY3RvcjxpbnQ+JiBiYXJjb2RlcykgewogICAgICAgIHVub3JkZXJlZF9tYXA8aW50LCBpbnQ+IGNvdW50czsKICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGIgOiBiYXJjb2RlcykgewogICAgICAgICAgICArK2NvdW50c1tiXTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgc3RydWN0IEtWIHsKICAgICAgICAgICAgaW50IGNvZGU7CiAgICAgICAgICAgIGludCBjb3VudDsKICAgICAgICAgICAgYm9vbCBvcGVyYXRvciA8IChjb25zdCBLViYgb3RoZXIpIGNvbnN0IHsKICAgICAgICAgICAgICAgIGlmIChjb3VudCA9PSBvdGhlci5jb3VudCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBjb2RlIDwgb3RoZXIuY29kZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBjb3VudCA8IG90aGVyLmNvdW50OwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICAKICAgICAgICBzZXQ8S1Y+IHM7CiAgICAgICAgZm9yIChjb25zdCBhdXRvJiBrdiA6IGNvdW50cykgewogICAgICAgICAgICBzLmluc2VydCh7a3YuZmlyc3QsIGt2LnNlY29uZH0pOwogICAgICAgIH0KICAgICAgICAKICAgICAgICB2ZWN0b3I8aW50PiByZXM7CiAgICAgICAgcmVzLnJlc2VydmUoYmFyY29kZXMuc2l6ZSgpKTsKICAgICAgICB3aGlsZSAocy5zaXplKCkgPiAwKSB7CiAgICAgICAgICAgIGF1dG8ga3ZfbWluID0gKihwcmV2KHMuZW5kKCkpKTsKICAgICAgICAgICAgcy5lcmFzZShwcmV2KHMuZW5kKCkpKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgIH0KICAgICAgICByZXR1cm4gcmVzOwogICAgfQp9OwoKaW50IG1haW4oKSB7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCglyZXR1cm4gMDsKfQ==