結果
| 問題 |
No.3183 Swap or Rotate
|
| コンテスト | |
| ユーザー |
ID 21712
|
| 提出日時 | 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")
}
}
}
ID 21712