結果

問題 No.397 NO MORE KADOMATSU
ユーザー warashiwarashi
提出日時 2016-07-15 23:05:26
言語 Go
(1.22.1)
結果
TLE  
(最新)
AC  
(最初)
実行時間 -
コード長 679 bytes
コンパイル時間 11,602 ms
コンパイル使用メモリ 202,496 KB
実行使用メモリ 225,388 KB
平均クエリ数 0.33
最終ジャッジ日時 2023-09-24 00:16:15
合計ジャッジ時間 15,340 ms
ジャッジサーバーID
(参考情報)
judge14 / judge12
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 25 ms
23,676 KB
testcase_01 AC 20 ms
23,352 KB
testcase_02 AC 20 ms
24,312 KB
testcase_03 TLE -
testcase_04 -- -
testcase_05 -- -
testcase_06 -- -
testcase_07 -- -
testcase_08 -- -
testcase_09 -- -
testcase_10 -- -
testcase_11 -- -
testcase_12 -- -
testcase_13 -- -
testcase_14 -- -
testcase_15 -- -
testcase_16 -- -
testcase_17 -- -
権限があれば一括ダウンロードができます

ソースコード

diff #

package main

import "fmt"
import "reflect"

type Swap struct {
	u, v int
}

func (s Swap) String() string {
	return fmt.Sprint(s.u, s.v)
}
func main() {
	var N int
	fmt.Scan(&N)
	A := make([]int, N)
	for i := range A {
		fmt.Scan(&A[i])
	}

	var sw []Swap

	preA := make([]int, N)
	for {
		if reflect.DeepEqual(preA, A) {
			break
		}
		copy(preA, A)
		for i := range A {
			if N <= i+2 {
				break
			}
			j := i + 1
			k := j + 1

			if (A[i] < A[j] && A[j] > A[k]) || (A[i] > A[j] && A[j] < A[k]) {
				sw = append(sw, Swap{j, k})
				A[j], A[k] = A[k], A[j]
			}
		}
	}

	fmt.Println(len(sw))
	for i := range sw {
		fmt.Println(sw[i])
	}

	var dummy int
	fmt.Scan(&dummy)
}
0