#include <queue>
#include <vector>
#include <iostream>
struct Cell
{
int m_totalCost;
Cell(int totalCost=0) : m_totalCost(totalCost) {}
struct PriorityCompare
{
bool operator()(Cell const* lhs, const Cell* rhs) const
{
return rhs->m_totalCost < lhs->m_totalCost;
}
};
};
std::priority_queue<Cell*, std::vector<Cell*>, Cell::PriorityCompare> g_path;
int main()
{
Cell first(rand() % 1000);
Cell second(rand() % 1000);
Cell third(rand() % 1000);
Cell fourth(rand() % 1000);
Cell fifth(rand() % 1000);
g_path.push(&first);
g_path.push(&second);
g_path.push(&third);
g_path.push(&fourth);
g_path.push(&fifth);
while (g_path.empty() == false) {
Cell* cell = g_path.top();
g_path.pop();
std::cout << cell->m_totalCost << "\n";
}
return 0;
}
I2luY2x1ZGUgPHF1ZXVlPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8aW9zdHJlYW0+CgpzdHJ1Y3QgQ2VsbAp7CiAgICBpbnQgbV90b3RhbENvc3Q7CiAgICBDZWxsKGludCB0b3RhbENvc3Q9MCkgOiBtX3RvdGFsQ29zdCh0b3RhbENvc3QpIHt9CgogICAgc3RydWN0IFByaW9yaXR5Q29tcGFyZQogICAgewogICAgICAgIGJvb2wgb3BlcmF0b3IoKShDZWxsIGNvbnN0KiBsaHMsIGNvbnN0IENlbGwqIHJocykgY29uc3QKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiByaHMtPm1fdG90YWxDb3N0IDwgbGhzLT5tX3RvdGFsQ29zdDsKICAgICAgICB9CiAgICB9Owp9OwoKc3RkOjpwcmlvcml0eV9xdWV1ZTxDZWxsKiwgc3RkOjp2ZWN0b3I8Q2VsbCo+LCBDZWxsOjpQcmlvcml0eUNvbXBhcmU+IGdfcGF0aDsKCiAgICBpbnQgbWFpbigpCiAgICB7CiAgICAgICAgQ2VsbCBmaXJzdChyYW5kKCkgJSAxMDAwKTsKICAgICAgICBDZWxsIHNlY29uZChyYW5kKCkgJSAxMDAwKTsKICAgICAgICBDZWxsIHRoaXJkKHJhbmQoKSAlIDEwMDApOwogICAgICAgIENlbGwgZm91cnRoKHJhbmQoKSAlIDEwMDApOwogICAgICAgIENlbGwgZmlmdGgocmFuZCgpICUgMTAwMCk7CgogICAgICAgIGdfcGF0aC5wdXNoKCZmaXJzdCk7CiAgICAgICAgZ19wYXRoLnB1c2goJnNlY29uZCk7CiAgICAgICAgZ19wYXRoLnB1c2goJnRoaXJkKTsKICAgICAgICBnX3BhdGgucHVzaCgmZm91cnRoKTsKICAgICAgICBnX3BhdGgucHVzaCgmZmlmdGgpOwoKICAgICAgICB3aGlsZSAoZ19wYXRoLmVtcHR5KCkgPT0gZmFsc2UpIHsKICAgICAgICAgICAgQ2VsbCogY2VsbCA9IGdfcGF0aC50b3AoKTsKICAgICAgICAgICAgZ19wYXRoLnBvcCgpOwogICAgICAgICAgICBzdGQ6OmNvdXQgPDwgY2VsbC0+bV90b3RhbENvc3QgPDwgIlxuIjsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7CiAgICB9