結果

問題 No.2804 Fixer And Ratism
ユーザー highlighter
提出日時 2024-07-04 16:56:38
言語 C++23
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 143 ms / 2,000 ms
コード長 1,317 bytes
コンパイル時間 3,420 ms
コンパイル使用メモリ 267,756 KB
実行使用メモリ 6,944 KB
最終ジャッジ日時 2024-07-11 23:11:11
合計ジャッジ時間 7,194 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 31
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

#include<bits/stdc++.h>
using namespace std;
int main(){
set<pair<int,string>> data1;
set<pair<int,string>> data2;
int N,Q;
cin >> N >> Q;
int P=0;
for(;Q--;){
int c;
cin >> c;
if(c==1){
string s;
int r;
cin >> s >> r;
if(N==0 && !data2.empty()){
pair<int,string> p=*begin(data2);
if(p.first<r){
data2.erase(p);
data2.insert(make_pair(r,s));
cout << p.second << endl;
continue;
}
cout << s << endl;
continue;
}
if(N==0){
cout << s << endl;
continue;
}
P++;
N--;
data2.insert(make_pair(r,s));
continue;
}
if(c==2){
int x;
cin >> x;
priority_queue<pair<int,string>,vector<pair<int,string>>,greater<pair<int,string>>> data3;
N-=x;
while(N<0){
P--;
N++;
if(!data2.empty()){
pair<int,string> p=*begin(data2);
data2.erase(p);
data3.push(p);
continue;
}
pair<int,string> p=*begin(data1);
data1.erase(p);
data3.push(p);
}
while(!data3.empty()){
cout << data3.top().second << endl;
data3.pop();
}
continue;
}
string s;
int x;
cin >> s >> x;
N+=x;
pair<int,string> q=make_pair(-1,s);
for(auto p : data2){
if(p.second==s){
q.first=p.first;
break;
}
}
if(q.first!=-1){
data2.erase(q);
data1.insert(q);
}
}
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0