結果
問題 | No.927 Second Permutation |
ユーザー |
![]() |
提出日時 | 2020-02-03 21:19:59 |
言語 | Go (1.23.4) |
結果 |
AC
|
実行時間 | 635 ms / 2,000 ms |
コード長 | 685 bytes |
コンパイル時間 | 14,100 ms |
コンパイル使用メモリ | 237,636 KB |
実行使用メモリ | 10,428 KB |
最終ジャッジ日時 | 2024-09-19 06:18:30 |
合計ジャッジ時間 | 20,817 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 27 |
ソースコード
package mainimport ("fmt""sort")func main() {var x stringfmt.Scan(&x)m := make(map[int]int, 0)for i := 0; i < len(x); i++ {m[int(x[i]-'0')]++}ks := make([]int, 0)for k := range m {ks = append(ks, k)}sort.Sort(sort.Reverse(sort.IntSlice(ks)))maxs := ""for i := range ks {for j := 0; j < m[ks[i]]; j++ {maxs += string('0' + byte(ks[i]))}}ans := -1for i := len(maxs) - 1; i-1 >= 0; i-- {if maxs[i-1] != maxs[i] {s := maxs[0:i-1] + string(maxs[i]) + string(maxs[i-1])if i+1 < len(maxs) {s += string(maxs[i+1:])}if s[0] == '0' {break} else {fmt.Println(s)return}}}fmt.Println(ans)}