// No.39 桁の数字を入れ替え // https://yukicoder.me/problems/no/39 // #include #include #include #include using namespace std; vector find_nums(vector& numbers, int target); int main() { std::cin.tie(nullptr); std::ios::sync_with_stdio(false); string s; cin >> s; vector N; for (char c: s) { N.push_back(c - '0'); } vector largest = N; sort(largest.rbegin(), largest.rend()); int t1 = 0; int t2 = 0; for (auto i = 0; i < N.size(); ++i) { if (N[i] != largest[i]) { t1 = largest[i]; t2 = N[i]; break; } } if (t1 != 0) { vector p1 = find_nums(N, t1); vector p2 = find_nums(N, t2); swap(N[*(p1.end()-1)], N[*(p2.begin())]); } for (auto i: N) cout << i; cout << endl; } vector find_nums(vector& numbers, int target) { vector res; for (int i = 0; i < numbers.size(); ++i) { if (numbers[i] == target) res.push_back(i); } return res; }