結果
問題 | No.1051 PQ Permutation |
ユーザー |
![]() |
提出日時 | 2020-05-08 22:23:01 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 309 ms / 2,000 ms |
コード長 | 1,120 bytes |
コンパイル時間 | 2,432 ms |
コンパイル使用メモリ | 200,636 KB |
最終ジャッジ日時 | 2025-01-10 08:56:14 |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 46 |
コンパイルメッセージ
main.cpp: In function ‘int main()’: main.cpp:16:22: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 16 | scanf("%d",&A[i]); | ~~~~~^~~~~~~~~~~~ main.cpp:29:23: warning: ‘p’ may be used uninitialized [-Wmaybe-uninitialized] 29 | if(p>q&&(!S.count(P)||!S.count(Q)))continue; | ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~ main.cpp:13:13: note: ‘p’ was declared here 13 | int p,q; | ^ main.cpp:29:23: warning: ‘q’ may be used uninitialized [-Wmaybe-uninitialized] 29 | if(p>q&&(!S.count(P)||!S.count(Q)))continue; | ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~ main.cpp:13:15: note: ‘q’ was declared here 13 | int p,q; | ^
ソースコード
#include <bits/stdc++.h>using namespace std;#define modulo 1000000007#define mod(mod_x) ((((long long)mod_x+modulo))%modulo)#define Inf 1000000int main(){int N,P,Q;cin>>N>>P>>Q;int p,q;vector<int> A(N);for(int i=0;i<N;i++){scanf("%d",&A[i]);if(A[i]==P)p = i;if(A[i]==Q)q = i;}set<int> S;vector<int> ans;for(int i=N-1;i>=0;i--){S.insert(A[i]);auto it= S.upper_bound(A[i]);L:if(S.count(P)&&!S.count(Q))continue;if(p>q&&(!S.count(P)||!S.count(Q)))continue;if(it==S.end())continue;if(S.count(P)&&(*it)==Q){it++;goto L;}for(int j=0;j<i;j++)ans.push_back(A[j]);ans.push_back(*it);S.erase(it);int t = -1;bool f = false;if(S.count(P))f=true;for(auto a:S){if(a==P){ans.push_back(a);if(t!=-1)ans.push_back(t);f=false;}else if(a==Q){if(f){t = Q;}else{ans.push_back(a);}}else{ans.push_back(a);}}break;}if(ans.size()==0)cout<<-1<<endl;else{for(int i=0;i<ans.size();i++){if(i!=0)cout<<' ';cout<<ans[i];}cout<<endl;}return 0;}