結果
問題 | No.2804 Fixer And Ratism |
ユーザー |
|
提出日時 | 2024-07-27 17:38:02 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 297 ms / 2,000 ms |
コード長 | 1,476 bytes |
コンパイル時間 | 2,802 ms |
コンパイル使用メモリ | 190,100 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-07-27 17:38:10 |
合計ジャッジ時間 | 8,341 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 31 |
ソースコード
#include <bits/stdc++.h>using namespace std;#define rep(i, n) for (int i = 0; i < (int)n; i++)struct Member {string s;int r;Member(string s, int r) : s(s), r(r) {}bool operator<(const Member &rhs) const {return r < rhs.r;}bool operator==(const Member &rhs) const {return s == rhs.s;}};int main() {int n, q;cin >> n >> q;vector<Member> user, used;map<string, int> member;rep(i, q) {int d;cin >> d;if (d == 1) {string s;int r;cin >> s >> r;user.push_back(Member(s, r));member[s] = r;}if (d == 2) {int x;cin >> x;n -= x;}if (d == 3) {string s;int x;cin >> s >> x;if (find(user.begin(), user.end(), Member(s, member[s])) !=user.end()) {Member mem = Member(s, member[s]);user.erase(find(user.begin(), user.end(), mem));used.push_back(mem);}n += x;}sort(user.begin(), user.end());sort(used.begin(), used.end());vector<Member> leave;while ((int)user.size() + (int)used.size() > n) {if ((int)user.size() == 0)break;leave.push_back(user[0]);user.erase(user.begin());}if ((int)user.size() == 0) {while ((int)used.size() > n) {leave.push_back(used[0]);used.erase(used.begin());}}sort(leave.begin(), leave.end());for (Member m : leave)cout << m.s << endl;leave.clear();}return 0;}