#include <iostream>
#include <string>
#include <functional>
#include <algorithm>
template <typename T, typename cmp>
void bubblesort(T ar[], int n, cmp compare_fn)
{
int swaps = 1;
while (swaps)
{
swaps = 0;
for (int i = 0; i < n - 1; i++)
{
if (!compare_fn(ar[i], ar[i + 1]))
{
std::swap(ar[i], ar[i + 1]);
swaps = 1;
}
}
}
}
template <typename T>
void bubblesort(T ar[], int n)
{
// call general version using <
bubblesort(ar, n, std::less<T>());
}
struct election
{
std::string party;
std::string state;
std::string pop;
std::string reps;
int ratio;
bool operator <(const election& e) const { return pop < e.pop; }
};
using namespace std;
int main()
{
election results[3];
results[0].pop = "abc";
results[1].pop = "123";
results[2].pop = "def";
bubblesort<election>(results, 3);
for (int i = 0; i < 3; ++i)
std::cout << results[i].pop << "\n";
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KI2luY2x1ZGUgPGFsZ29yaXRobT4KCnRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBjbXA+CnZvaWQgYnViYmxlc29ydChUIGFyW10sIGludCBuLCBjbXAgY29tcGFyZV9mbikKewoJaW50IHN3YXBzID0gMTsKCXdoaWxlIChzd2FwcykKCXsKCQlzd2FwcyA9IDA7CgkJZm9yIChpbnQgaSA9IDA7IGkgPCBuIC0gMTsgaSsrKQoJCXsKCQkJaWYgKCFjb21wYXJlX2ZuKGFyW2ldLCBhcltpICsgMV0pKQoJCQl7CgkJCQlzdGQ6OnN3YXAoYXJbaV0sIGFyW2kgKyAxXSk7CgkJCQlzd2FwcyA9IDE7CgkJCX0KCQl9Cgl9Cn0KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgp2b2lkIGJ1YmJsZXNvcnQoVCBhcltdLCBpbnQgbikKewoJLy8gY2FsbCBnZW5lcmFsIHZlcnNpb24gdXNpbmcgPAoJYnViYmxlc29ydChhciwgbiwgc3RkOjpsZXNzPFQ+KCkpOwp9CgpzdHJ1Y3QgZWxlY3Rpb24KewoJc3RkOjpzdHJpbmcgcGFydHk7CglzdGQ6OnN0cmluZyBzdGF0ZTsKCXN0ZDo6c3RyaW5nIHBvcDsKCXN0ZDo6c3RyaW5nIHJlcHM7CglpbnQgcmF0aW87Cglib29sIG9wZXJhdG9yIDwoY29uc3QgZWxlY3Rpb24mIGUpIGNvbnN0IHsgcmV0dXJuIHBvcCA8IGUucG9wOyB9Cn07Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKQp7CgllbGVjdGlvbiByZXN1bHRzWzNdOwoJcmVzdWx0c1swXS5wb3AgPSAiYWJjIjsKCXJlc3VsdHNbMV0ucG9wID0gIjEyMyI7CglyZXN1bHRzWzJdLnBvcCA9ICJkZWYiOwoKCWJ1YmJsZXNvcnQ8ZWxlY3Rpb24+KHJlc3VsdHMsIDMpOwoKCWZvciAoaW50IGkgPSAwOyBpIDwgMzsgKytpKQoJCXN0ZDo6Y291dCA8PCByZXN1bHRzW2ldLnBvcCA8PCAiXG4iOwp9