小米oj 幫小學生排隊
阿新 • • 發佈:2018-12-31
#include <iostream> using namespace std; #include <set> #include <vector> class mpair { public: mpair() {}; mpair(int a, int b) :a(a), b(b) {}; int a; int b; friend istream& operator>>(istream& in,mpair& p) { in >> p.a >> p.b; return in; } }; struct cmp { bool operator()(const mpair&p1, const mpair&p2) const{ if (p1.a != p2.a) { if (p1.a < p2.a) return true; else return false; } else { if (p1.b > p2.b) return true; else return false; } } }; void insert_vector(vector<mpair>&v, const mpair&p,int len) { int n = p.b; int count = 0; for (int i = 0; i < len; i++) { if (v[i].a == -1 && count < n) { count++; } else if (v[i].a == -1 && count == n){ v[i] = p; break; } } } int main() { int count ; vector<mpair>v; set<mpair, cmp>m_set; cin >> count; int n = 1; for (int i = 0; i < count; i++) { v.push_back(mpair(-1, 1)); } mpair p; while (cin >> p) { m_set.insert(p); } for (auto it = m_set.begin(); it != m_set.end(); it++) { int a = it->b; insert_vector(v, *it, count); } cout << v[0].a << " " << v[0].b ; if (count > 1) { for (int i = 1; i < count; i++) { cout<<" "<< v[i].a << " " << v[i].b ; } } return 0; }