#include "third_party_format.hpp"
#include <boost/endian/conversion.hpp>
#include <vector>
#include <fstream>
#include <algorithm>
#include <iostream>
using third_party::record;
int main()
{
std::ifstream in("data.bin", std::ios::binary);
if (!in) { std::cout << "Could not open data.bin\n"; return 1; }
std::ofstream out("sorted-data.bin", std::ios::binary);
if (!out) { std::cout << "Could not open sorted-data.bin\n"; return 1; }
record rec;
std::vector<record> recs;
while (!in.eof()) {
in.read((char*)&rec, sizeof(rec));
rec.balance = boost::endian::big_to_native(rec.balance); recs.push_back(rec);
}
std::sort(recs.begin(), recs.end(), [](const record& lhs, const record& rhs) -> bool
{ return lhs.balance > rhs.balance; });
for (auto &out_rec : recs) {
out_rec.balance = boost::endian::native_to_big(out_rec.balance); out.write((const char*)&out_rec, sizeof(out_rec));
}
}