結果
問題 | No.2740 Old Maid |
ユーザー |
![]() |
提出日時 | 2024-04-21 02:07:18 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 229 ms / 2,000 ms |
コード長 | 1,625 bytes |
コンパイル時間 | 2,184 ms |
コンパイル使用メモリ | 206,236 KB |
最終ジャッジ日時 | 2025-02-21 07:40:28 |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 62 |
ソースコード
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; typedef pair<ll,ll> PP; // #define MOD 1000000007 #define MOD 998244353 #define INF 2305843009213693951 //#define INF 810114514 #define PI 3.141592653589 #define setdouble setprecision #define REP(i,n) for(ll i=0;i<(n);++i) #define OREP(i,n) for(ll i=1;i<=(n);++i) #define RREP(i,n) for(ll i=(n)-1;i>=0;--i) #define ORREP(i,n) for(ll i=(n);i>=1;--i) #define rep(i,a,b) for(ll i=(a);i<=(b);++i) #define ALL(v) (v).begin(), (v).end() #define GOODBYE do { cout << "-1" << endl; return 0; } while (false) #define MM <<" "<< #define Endl endl #define debug true #define debug2 false int main(void){ //cin.tie(nullptr); //ios::sync_with_stdio(false); ll N; cin >> N; vector<ll> P(N); REP(i,N){cin >> P[i];P[i]--;} list<ll> L;REP(i,N){L.push_back(P[i]);} vector<_List_iterator<long long>> IT(N); int now = 0; for(auto it=L.begin();it!=L.end();it++){ IT[P[now]] = it; now++; } set<ll> R; REP(i,N){R.insert(i);} vector<ll> Ans; REP(i,N/2){ ll z = *R.begin(); auto it = L.end();it--; if(z==(*it)){ auto it2 = R.begin();it2++; z = *it2; } Ans.push_back(*IT[z]); R.erase(R.find(*IT[z])); auto it3 = L.erase(IT[z]); Ans.push_back(*it3); R.erase(R.find(*it3)); L.erase(it3); } REP(i,N){ cout << Ans[i]+1 << " "; } cout << endl; return 0; }