結果

問題 No.39 桁の数字を入れ替え
コンテスト
ユーザー nukacha
提出日時 2018-05-31 15:00:16
言語 C++17(clang)
(clang++ 22.1.2 + boost 1.89.0)
コンパイル:
clang++ -O2 -lm -std=c++1z -Wuninitialized -DONLINE_JUDGE -o a.out _filename_
実行:
./a.out
結果
WA  
(最新)
AC  
(最初)
実行時間 -
コード長 769 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 555 ms
コンパイル使用メモリ 139,136 KB
実行使用メモリ 6,400 KB
最終ジャッジ日時 2026-05-24 03:52:37
合計ジャッジ時間 1,637 ms
ジャッジサーバーID
(参考情報)
judge2_0 / judge1_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 16 WA * 3
権限があれば一括ダウンロードができます
コンパイルメッセージ
main.cpp:10:11: warning: variable length arrays in C++ are a Clang extension [-Wvla-cxx-extension]
   10 |     int n[s.length()];
      |           ^~~~~~~~~~
main.cpp:10:13: note: non-constexpr function 'length' cannot be used in a constant expression
   10 |     int n[s.length()];
      |             ^
/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/basic_string.h:1083:7: note: declared here
 1083 |       length() const _GLIBCXX_NOEXCEPT
      |       ^
main.cpp:14:12: warning: variable length arrays in C++ are a Clang extension [-Wvla-cxx-extension]
   14 |     int ns[s.length()];
      |            ^~~~~~~~~~
main.cpp:14:14: note: non-constexpr function 'length' cannot be used in a constant expression
   14 |     int ns[s.length()];
      |              ^
/usr/lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/bits/basic_string.h:1083:7: note: declared here
 1083 |       length() const _GLIBCXX_NOEXCEPT
      |       ^
2 warnings generated.

ソースコード

diff #
raw source code

#include <iostream>
#include <algorithm>
#include <string>

using namespace std;

int main() {
    string s;
    cin >> s;
    int n[s.length()];
    for (int i = 0; i < s.length(); i++) {
        n[i] = s[i] - '0';
    }
    int ns[s.length()];
    copy(n, n+s.length(), ns);
    sort(ns, ns+s.length(), greater<int>());
    for(int i = 0; i < 8; i++)
    {
        if (n[i] < ns[i]) {
            for (int j = 8; j > i; j--) {
                if (ns[i] == n[j]) {
                    n[j] = n[i];
                    n[i] = ns[i];
                    break;
                }
            }
            break;
        }
    }
    for(int i = 0; i < s.length(); i++){
        if (n[i] == 0) {
            break;
        }
        cout << n[i];
    }
    cout << endl;
}
0