結果
問題 | No.326 あみだますたー |
ユーザー |
|
提出日時 | 2015-12-18 03:18:49 |
言語 | Go (1.23.4) |
結果 |
AC
|
実行時間 | 43 ms / 2,000 ms |
コード長 | 1,103 bytes |
コンパイル時間 | 14,204 ms |
コンパイル使用メモリ | 223,688 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-11-07 23:16:16 |
合計ジャッジ時間 | 14,798 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 26 |
ソースコード
package mainimport ("fmt")func main() {var N intvar K intfmt.Scanf("%d", &N)fmt.Scanf("%d", &K)// i番目にいる数字var ami = make([]int, N + 1)for i := 1; i < N + 1; i++ {ami[i] = i}// 数字iがいる場所var amip = make([]int, N + 1)for i := 1; i < N + 1; i++ {amip[i] = i}for i := 0; i < K; i++ {var X, Y int_, err := fmt.Scanf("%d %d", &X, &Y)if err != nil {panic(err)}amip[ami[X]], amip[ami[Y]] = amip[ami[Y]], amip[ami[X]]ami[X], ami[Y] = ami[Y], ami[X]}// i番目に行きたい数字g := make([]int, N + 1)for i := 0; i < N; i++ {var t int_, err := fmt.Scanf("%d", &t)if err != nil {panic(err)}g[t] = i + 1}ans := make([]int, 0)for i := 1; i <= N; i++ {// i番目に行きたい数字→ 今動かしたい数字l := g[i]for amip[l] > i {ans = append(ans, amip[l] - 1)ami[amip[l] - 1], ami[amip[l]] = ami[amip[l]], ami[amip[l] - 1]amip[ami[amip[l]]] += 1amip[l] -= 1}}// 出力fmt.Println(len(ans))for _, a := range ans {fmt.Println(a, a + 1)}}