abc217 E-sorting queriesにおいて自分のコードのどこが間違っているのかがわからないです。協力していただけると幸いです。

実現したいこと

コード内の間違えを見つけていただきたいです。

発生している問題・分からないこと

16個のtest caseのうち5個がwaです。

エラーメッセージ

error

1エラーメッセージは出ていないです。

該当のソースコード

c++

1#include <bits/stdc++.h>2#include <cmath>3using ll=long long;4#define rep(i,a,b) for(i=a;i<b;i++)5#define chmin(x,b) x=min(x,b)6using namespace std;7using v=vector<int>;8using vv=vector<vector<int>>;9int mod1=998244353;10int mod2=1000000007;11const ll INF = 1e18; 12 13int main(){14 ll n,q,y,x,i,j,k,z,p;15 int ans=1e9,sum2=0,h=0,w=0,m,h1=0,w1=0;16 ll tmp1=0,tmp2=0,sum=0;17 cin>>q;18 deque<int> deq;19 set<int>sat;20 rep(i,0,q){21 cin>>x;22 if(x==1){23 cin>>y;24 deq.push_back(y);25 }else if(x==2){26 if(sat.size()){27 auto ch=sat.begin();28 cout<<*ch<<endl;29 sat.erase(*ch);30 auto chh=sat.begin();31 //cout<<"*"<<*chh<<endl;32 }else{33 cout<<deq.front()<<endl;34 deq.pop_front();35 }36 }else{37 while(deq.size()){38 sat.insert(deq.front());deq.pop_front();39 }40 }41 }42 }

試したこと・調べたこと

上記の詳細・結果

waがでたtest caseをみて自分なりにdebugをしたのですがなぜwaが出るのか原因を特定できませんでした。atcoder公式が出している解答コードを見たのですが同じようなコードを書いてあるように感じました。

問題のリンクです。
https://atcoder.jp/contests/abc217/tasks/abc217_e

解答コードを添付しておきます。
#include <bits/stdc++.h>
using namespace std;
#define rep(i,n) for (int i = 0; i < (n); ++i)

int main() {
int Q;
cin >> Q;
priority_queue<int,vector<int>,greater<int>> pq;
queue<int> q;
rep(qi,Q) {
int c;
cin >> c;
if (c == 1) {
int x;
cin >> x;
q.push(x);
} else if (c == 2) {
if (pq.size()) {
cout << pq.top() << endl;
pq.pop();
} else {
cout << q.front() << endl;
q.pop();
}
} else {
while (q.size()) {
pq.push(q.front());
q.pop();
}
}
}
return 0;
}

補足

特になし

コメントを投稿

0 コメント