結果

問題 No.397 NO MORE KADOMATSU
ユーザー warashi
提出日時 2016-07-15 23:05:26
言語 Go
(1.23.4)
結果
TLE  
(最新)
AC  
(最初)
実行時間 -
コード長 679 bytes
コンパイル時間 12,933 ms
コンパイル使用メモリ 235,928 KB
実行使用メモリ 152,004 KB
平均クエリ数 0.33
最終ジャッジ日時 2024-07-17 00:06:39
合計ジャッジ時間 16,907 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 3 TLE * 1 -- * 14
権限があれば一括ダウンロードができます

ソースコード

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