結果
問題 | No.429 CupShuffle |
ユーザー | tsuchinaga |
提出日時 | 2019-03-29 11:46:48 |
言語 | Go (1.22.1) |
結果 |
AC
|
実行時間 | 24 ms / 2,000 ms |
コード長 | 1,259 bytes |
コンパイル時間 | 15,637 ms |
コンパイル使用メモリ | 238,260 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-11-07 00:37:14 |
合計ジャッジ時間 | 16,797 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 1 ms
6,820 KB |
testcase_01 | AC | 1 ms
5,248 KB |
testcase_02 | AC | 2 ms
5,248 KB |
testcase_03 | AC | 2 ms
5,248 KB |
testcase_04 | AC | 2 ms
5,248 KB |
testcase_05 | AC | 1 ms
5,248 KB |
testcase_06 | AC | 2 ms
5,248 KB |
testcase_07 | AC | 2 ms
5,248 KB |
testcase_08 | AC | 1 ms
5,248 KB |
testcase_09 | AC | 2 ms
5,248 KB |
testcase_10 | AC | 3 ms
5,248 KB |
testcase_11 | AC | 24 ms
5,248 KB |
testcase_12 | AC | 22 ms
5,248 KB |
testcase_13 | AC | 24 ms
5,248 KB |
testcase_14 | AC | 24 ms
5,248 KB |
testcase_15 | AC | 1 ms
5,248 KB |
ソースコード
package main import ( "bufio" "fmt" "os" "strconv" ) func main() { var n, k, x int _, _ = fmt.Scan(&n, &k, &x) sc := bufio.NewScanner(os.Stdin) sc.Split(bufio.ScanWords) // 初期状態を構築 be := make([]int, n) for i := range be { be[i] = i } // xより前の最後の状態を作りながら、xより後の入れ替えを取得 type change struct { a, b int } afChanges := make([]change, k-x) for i := 0; i < k; i++ { if x == i+1 { sc.Scan() sc.Scan() continue } sc.Scan() a, _ := strconv.Atoi(sc.Text()) sc.Scan() b, _ := strconv.Atoi(sc.Text()) if i < x { be[a-1], be[b-1] = be[b-1], be[a-1] } else { afChanges[k-i-1] = change{a - 1, b - 1} } } // fmt.Println("be", be) // fmt.Println(afChanges) // 最終状態を取得 af := make([]int, n) for i := range af { sc.Scan() a, _ := strconv.Atoi(sc.Text()) af[i] = a - 1 } // fmt.Println("af", af) // xより後の入れ替えを最終状態に実行し、x直後の状態を取得 for _, c := range afChanges { af[c.a], af[c.b] = af[c.b], af[c.a] } a, b := -1, -1 for i := range be { if be[i] != af[i] { if a == -1 { a = i + 1 } else { b = i + 1 break } } } fmt.Printf("%d %d\n", a, b) }