#include #include #include #include #include struct Job { int deadline; int id; }; struct Later { bool operator()(const Job& a, const Job& b) const { if (a.deadline != b.deadline) return a.deadline > b.deadline; return a.id > b.id; } }; int main() { std::stack undo; undo.push(1); undo.push(2); assert(undo.top() == 2); undo.pop(); assert(undo.top() == 1); std::queue fifo; fifo.push(1); fifo.push(2); assert(fifo.front() == 1); fifo.pop(); assert(fifo.front() == 2); std::priority_queue, Later> ready; ready.push(Job{5, 1}); ready.push(Job{2, 3}); ready.push(Job{2, 2}); std::vector order; while (!ready.empty()) { Job current = ready.top(); ready.pop(); order.push_back(current.id); } assert((order == std::vector{2, 3, 1})); std::cout << order[0] << ' ' << order[1] << ' ' << order[2] << '\n'; }