結果

問題 No.3183 Swap or Rotate
ユーザー kenti
提出日時 2025-06-20 22:43:52
言語 C++23
(gcc 13.3.0 + boost 1.87.0)
結果
WA  
実行時間 -
コード長 1,058 bytes
コンパイル時間 3,001 ms
コンパイル使用メモリ 282,032 KB
実行使用メモリ 7,844 KB
最終ジャッジ日時 2025-06-20 22:43:59
合計ジャッジ時間 6,487 ms
ジャッジサーバーID
(参考情報)
judge2 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 5 WA * 16
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>
using namespace std;
using ll = long long;

int main() {
    cin.tie(nullptr);
    ios_base::sync_with_stdio(false);
    int n; cin >> n;
    vector<int> p(n);
    for (int &x : p) cin >> x;
    auto finished = [&] () -> bool {
        for (int i = 0; i < n; i++) {
            if (p[i] != i) return false;
        }
        return true;
    };
    vector<bool> ok(n, false);
    ok[0] = true;
    auto update = [&] () -> void {
        for (int i = 0; i < n; i++) {
            if (p[i] == 0) {
                for (int j = 1; j < n; j++) {
                    int k = (i + j) % n;
                    if (p[k] == j) ok[j] = true;
                    else break;
                }
                break;
            }
        }
    };
    update();
    string ans;
    while (!finished()) {
        if (!ok[p[0]] && !ok[p[1]]) {
            ans += 'S';
            swap(p[0], p[1]);
            update();
        }
        ans += 'R';
        rotate(p.begin(), p.begin() + 1, p.end());
    }
    cout << ans << "\n";
    return 0;
}
0