結果

問題 No.3726 Flawless Flow
コンテスト
ユーザー テナガザル
提出日時 2026-09-19 15:44:24
言語 C++23
(gcc 15.3.0 + boost 1.92.0 + ACL)
コンパイル:
g++-15 -O2 -lm -std=c++23 -Wuninitialized -DONLINE_JUDGE -o a.out _filename_
実行:
./a.out
結果
RE  
実行時間 -
コード長 1,142 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 1,164 ms
コンパイル使用メモリ 185,624 KB
実行使用メモリ 9,988 KB
最終ジャッジ日時 2026-09-19 15:44:30
合計ジャッジ時間 4,363 ms
ジャッジサーバーID
(参考情報)
judge4_0 / judge2_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 51 RE * 8
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;


int main()
{
  int n;
  cin >> n;
  vector<int> p(n), q(n);
  for (int i = 0; i < n; ++i) cin >> p[i];
  for (int i = 0; i < n; ++i) cin >> q[i];
  vector<int> pid(n), qid(n);
  for (int i = 0; i < n; ++i)
  {
    --p[i], --q[i];
    pid[p[i]] = i;
    qid[q[i]] = i;
  }
  vector<vector<int>> a(n + 1, vector<int> (n));
  for (int i = 0; i < n; ++i) a[0][i] = p[i];
  for (int i = 1; i <= n; ++i)
  {
    a[i] = a[i - 1];
    vector<pair<int, int>> p;
    for (int j = 0; j + 1 < n; ++j)
    {
      if (qid[a[i][j]] > qid[a[i][j + 1]])
      {
        p.push_back({max(abs(qid[a[i][j]] - j), abs(qid[a[i][j + 1]] - j - 1)), j});
      }
    }
    sort(p.rbegin(), p.rend());
    for (auto [_, id] : p)
    {
      if (a[i][id] != a[i - 1][id] || a[i][id + 1] != a[i - 1][id + 1]) continue;
      swap(a[i][id], a[i][id + 1]);
    }
  }
  for (int i = 0; i < n; ++i)
  {
    if (a[n][i] != q[i])
    {
      cout << "-1" << endl;
      return 1;
    }
  }
  for (int i = 0; i <= n; ++i) for (int j = 0; j < n; ++j) cout << a[i][j] + 1 << " \n"[j == n - 1];
}
0