結果
問題 | No.2740 Old Maid |
ユーザー |
|
提出日時 | 2024-04-13 18:47:56 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 90 ms / 2,000 ms |
コード長 | 1,028 bytes |
コンパイル時間 | 2,038 ms |
コンパイル使用メモリ | 194,904 KB |
最終ジャッジ日時 | 2025-02-21 01:14:18 |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 62 |
ソースコード
#include "bits/stdc++.h" using namespace std; #define REP(i, n) for(ll i = 0;i < n;i++) #define REPR(i, n) for(ll i = n;i >= 0;i--) #define FOR(i, m, n) for(ll i = m;i < n;i++) #define FORR(i, m, n) for(ll i = m;i >= n;i--) #define REPO(i, n) for(ll i = 1;i <= n;i++) #define ll long long #define INF (ll)1ll << 60 #define MINF (-1 * INF) #define ALL(n) n.begin(),n.end() #define MOD (ll)1000000007 #define P pair<ll, ll> int n, nxt[210000], prv[210000], s[210000]; vector<int> ans; int main(){ cin >> n; REP(i, n)cin >> s[i]; REP(i, n){ prv[s[i]] = (i == 0 ? -1 : s[i - 1]); nxt[s[i]] = (i == n - 1 ? -1 : s[i + 1]); } REPO(i, n){ if(nxt[i] != -1){ ans.push_back(i); ans.push_back(nxt[i]); if(prv[i] != -1) nxt[prv[i]] = nxt[nxt[i]]; if(nxt[nxt[i]] != -1) prv[nxt[nxt[i]]] = prv[i]; nxt[i] = nxt[nxt[i]] = -1; } } REP(i, n){ if(i != 0)cout << " "; cout << ans[i]; } cout << endl; }