実現したいこと
コード内の間違えを見つけていただきたいです。
発生している問題・分からないこと
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 }
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
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;
}
補足
特になし
回答2件
あなたの回答
tips
プレビュー