結果
問題 | No.326 あみだますたー |
ユーザー |
![]() |
提出日時 | 2019-03-30 17:15:48 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 9 ms / 2,000 ms |
コード長 | 1,987 bytes |
コンパイル時間 | 1,728 ms |
コンパイル使用メモリ | 183,156 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-11-15 20:23:20 |
合計ジャッジ時間 | 2,986 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 26 |
ソースコード
#include "bits/stdc++.h"using namespace std;#ifdef _DEBUG#include "dump.hpp"#else#define dump(...)#endif//#define int long long#define rep(i,a,b) for(int i=(a);i<(b);i++)#define rrep(i,a,b) for(int i=(b)-1;i>=(a);i--)#define all(c) begin(c),end(c)const int INF = sizeof(int) == sizeof(long long) ? 0x3f3f3f3f3f3f3f3fLL : 0x3f3f3f3f;const int MOD = 1'000'000'007;template<class T> bool chmax(T &a, const T &b) { if (a < b) { a = b; return true; } return false; }template<class T> bool chmin(T &a, const T &b) { if (b < a) { a = b; return true; } return false; }template<class T, class ...Tail>void tiedSort(vector<T> &a, vector<Tail>&... tail) {int n = a.size();using S = tuple<T, Tail...>;vector<S> s(n);for (int i = 0; i < n; i++)s[i] = make_tuple(a[i], tail[i]...);sort(s.begin(), s.end());for (int i = 0; i < n; i++)tie(a[i], tail[i]...) = s[i];}signed main() {cin.tie(0);ios::sync_with_stdio(false);int N, K; cin >> N >> K;vector<int> v(N); iota(all(v), 0);vector<int> X(K), Y(K); rep(i, 0, K) {cin >> X[i] >> Y[i];X[i]--, Y[i]--;swap(v[X[i]], v[Y[i]]);}dump(v);vector<int> id(N); iota(all(id), 0);vector<int> A(N); rep(i, 0, N) {cin >> A[i];A[i]--;}vector<int> B(N);rep(i, 0, N) {B[A[i]] = i;}dump(B);tiedSort(B, id);dump(B, id);vector<pair<int, int>> ans;for (int i = 0; i < N; i++) {for (int j = N - 1; j > i; j--) {if (id[v[j - 1]] > id[v[j]]) {swap(v[j - 1], v[j]);ans.emplace_back(j - 1, j);dump(v);}}}dump(v);cout << ans.size() << endl;rep(i, 0, ans.size()) {cout << ans[i].first + 1 << " " << ans[i].second + 1 << endl;}//iota(all(v), 1);//rep(i, 0, K)// swap(v[X[i]], v[Y[i]]);////rep(i, 0, ans.size())//// swap(v[ans[i].first], v[ans[i].second]);//dump(v);//int L; cin >> L;//vector<int> x(L), y(L); rep(i, 0, L) {// cin >> x[i] >> y[i];// x[i]--, y[i]--;// swap(v[x[i]], v[y[i]]);//}//dump(v);return 0;}