結果
問題 |
No.3183 Swap or Rotate
|
ユーザー |
![]() |
提出日時 | 2025-06-28 02:47:08 |
言語 | Go (1.23.4) |
結果 |
AC
|
実行時間 | 7 ms / 1,000 ms |
コード長 | 718 bytes |
コンパイル時間 | 12,039 ms |
コンパイル使用メモリ | 232,008 KB |
実行使用メモリ | 7,844 KB |
最終ジャッジ日時 | 2025-06-28 02:47:22 |
合計ジャッジ時間 | 13,087 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 21 |
ソースコード
package main import . "fmt" import . "sort" func main() { var n int Scan(&n) p := make(IntSlice, n) for i := range p { Scan(&p[i]) } ans := solve(p) Println(ans) } func solve(p IntSlice) string { s := make([]byte, 0, 2e4) x := 0 for { if x == 0 && IsSorted(p) { return string(s) } if p[x] > p[x+1] { p.Swap(x, x+1) s = append(s, 'S') } else { x++ s = append(s, 'R') if x+1 == p.Len() { x = 0 s = append(s, 'R') } } } } func init() { check() } func check() { p := make(IntSlice, 100) for j := 0; j < p.Len(); j++ { for i := range p { p[(i+j)%p.Len()] = p.Len()-1-i } ans := solve(p) if len(ans) > 2e4 { println(len(ans)) panic("bug") } } }