結果
問題 | No.2804 Fixer And Ratism |
ユーザー |
|
提出日時 | 2024-07-16 19:00:35 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 54 ms / 2,000 ms |
コード長 | 2,182 bytes |
コンパイル時間 | 863 ms |
コンパイル使用メモリ | 88,008 KB |
最終ジャッジ日時 | 2025-02-23 15:50:51 |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 31 |
ソースコード
#include <iostream>#include <set>#include <map>using namespace std;int main(){cin.tie(nullptr);ios::sync_with_stdio(false);int N, Q, i, r, x;string s;char t;set<pair<int, string>> priority, member, get_out;map<string, int> rating;cin >> N >> Q;for (i = 0; i != Q; ++i){cin >> t;switch (t){case '1':cin >> s >> r;member.emplace(r, s), rating.insert({ s, r });if (priority.size() + member.size() > N){if (!member.empty()){cout << member.begin()->second << '\n';rating.erase(rating.find(member.begin()->second));member.erase(member.begin());}else{cout << priority.begin()->second << '\n';rating.erase(rating.find(priority.begin()->second));priority.erase(priority.begin());}}break;case '2':cin >> x;N -= x;get_out.clear();while (priority.size() + member.size() > N){if (!member.empty()){get_out.emplace(*member.begin());rating.erase(rating.find(member.begin()->second));member.erase(member.begin());}else{get_out.emplace(*priority.begin());rating.erase(rating.find(priority.begin()->second));priority.erase(priority.begin());}}for (auto output : get_out)cout << output.second << '\n';break;case '3':cin >> s >> x;N += x;if (member.find(make_pair(rating[s], s)) != member.end()){priority.emplace(rating[s], s);member.erase(member.find(make_pair(rating[s], s)));}break;}}return 0;}