結果
| 問題 | No.927 Second Permutation |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2019-11-22 21:30:25 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.89.0) |
| 結果 |
AC
|
| 実行時間 | 6 ms / 2,000 ms |
| コード長 | 3,231 bytes |
| 記録 | |
| コンパイル時間 | 1,591 ms |
| コンパイル使用メモリ | 172,460 KB |
| 実行使用メモリ | 6,820 KB |
| 最終ジャッジ日時 | 2024-10-11 02:52:32 |
| 合計ジャッジ時間 | 2,574 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 27 |
ソースコード
#include <bits/stdc++.h>
#define range(i, l, r) for(long long int (i) = (l); (i) < (r); (i)++)
#define reversed_range(i, l, r) for (long long int (i) = (r) - 1; (i) >= l; (i)--)
using namespace std;
template <typename T>
using vec = vector<T>;
using lint = long long;
using ulint = unsigned long long;
using pint = pair<int, int>;
using plint = pair<lint, lint>;
template <typename S, typename T>
ostream& operator <<(ostream& os, pair<S, T> p) {
os << "(";
os << p.first << ", " << p.second;
return os << ")";
}
template <typename T>
ostream& operator <<(ostream& os, vec<T> v) {
os << "[";
if (v.size() == 0) return os << "]";
for (int i = 0; i < v.size() - 1; i++) {
os << v.at(i) << ", ";
}
return os << v.at(v.size() - 1) << "]";
}
template <typename T>
ostream& operator <<(ostream& os, set<T>& s) {
os << "{";
if (s.begin() == s.end()) return os << "}";
auto it_first_item = s.begin();
cout << *it_first_item;
for (auto it = ++it_first_item; it != s.end(); it++) {
cout << ", " << *it;
}
return cout << "}";
}
template <typename T>
ostream& operator <<(ostream& os, unordered_set<T>& s) {
os << "{";
if (s.begin() == s.end()) return os << "}";
auto it_first_item = s.begin();
cout << *it_first_item;
for (auto it = ++it_first_item; it != s.end(); it++) {
cout << ", " << *it;
}
return cout << "}";
}
template <typename K, typename V>
ostream& operator <<(ostream& os, map<K, V> m) {
os << "{";
if (m.begin() == m.end()) return os << "}";
auto it_first_item = m.begin();
cout << it_first_item->first << ": " << it_first_item->second;
for (auto it = ++it_first_item; it != m.end(); it++) {
cout << ", " << it->first << ": " << it->second;
}
return os << "}";
}
template <typename K, typename V>
ostream& operator <<(ostream& os, unordered_map<K, V> m) {
os << "{";
if (m.begin() == m.end()) return os << "}";
auto it_first_item = m.begin();
cout << it_first_item->first << ": " << it_first_item->second;
for (auto it = ++it_first_item; it != m.end(); it++) {
cout << ", " << it->first << ": " << it->second;
}
return os << "}";
}
lint pow(lint num, lint e, lint MOD) {
lint res = 1;
lint cur_num = num;
while (e) {
if (e & 1) {
res *= cur_num;
res %= MOD;
}
cur_num *= cur_num;
cur_num %= MOD;
e >>= 1;
}
return res;
}
int main() {
cin.tie(0); cout.tie(0);
ios::sync_with_stdio(false);
cout << fixed << setprecision(10);
string X; cin >> X;
sort(X.begin(), X.end(), greater<char>());
// cout << X << "\n";
string second_biggest = X;
lint num_digits = second_biggest.size();
lint swap_idx = num_digits - 1;
while (swap_idx >= 1 and second_biggest.at(swap_idx) == second_biggest.at(swap_idx - 1)) swap_idx--;
if (swap_idx == 0) {
cout << -1 << "\n";
return 0;
} else if (swap_idx == 1 and second_biggest.at(swap_idx) == '0') {
cout << -1 << "\n";
return 0;
}
swap(second_biggest.at(swap_idx), second_biggest.at(swap_idx - 1));
cout << second_biggest << "\n";
}