結果

問題 No.966 引き算をして門松列(その1)
ユーザー 👑 naipianaipia
提出日時 2020-01-13 22:27:36
言語 Go
(1.22.1)
結果
AC  
実行時間 21 ms / 2,000 ms
コード長 2,088 bytes
コンパイル時間 16,064 ms
コンパイル使用メモリ 207,900 KB
実行使用メモリ 4,384 KB
最終ジャッジ日時 2023-08-24 18:00:56
合計ジャッジ時間 15,766 ms
ジャッジサーバーID
(参考情報)
judge13 / judge14
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 2 ms
4,384 KB
testcase_01 AC 1 ms
4,380 KB
testcase_02 AC 1 ms
4,380 KB
testcase_03 AC 1 ms
4,380 KB
testcase_04 AC 15 ms
4,380 KB
testcase_05 AC 17 ms
4,380 KB
testcase_06 AC 21 ms
4,376 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

package main

import (
	"fmt"
	"bufio"
	"os"
	"strconv"
)

//=====I/O=====

var (
	sc = bufio.NewScanner(os.Stdin)
	wr = bufio.NewWriter(os.Stdout)
)

func scanInt() int {
	sc.Scan()
	a,_ := strconv.Atoi(sc.Text())
	return a
}

func scanInt64() int64 {
	sc.Scan()
	a,_ := strconv.ParseInt(sc.Text(),10,64)
	return a
}

func scanInts(n int) []int {
	res := make([]int, n)
	for i := 0; i < n; i++ { res[i] = scanInt() }
	return res
}

func scanText() string {
	sc.Scan()
	return sc.Text()
}

func printInts(a ...int) {
	for i, e := range a {
		fmt.Fprint(wr, e)
		if i != len(a)-1 { fmt.Fprint(wr, " ") }
	}
	fmt.Fprintln(wr)
	wr.Flush()
}

//=====main=====

func main() {
	sc.Split(bufio.ScanWords)

	t := scanInt()

	for i := 0; i < t; i++ {
		a,b,c := scanInt(), scanInt(), scanInt()

		if c>=b {
			a,c = c,a
		}

		ab := a-b
		bc := b-c

		if ab>0&&bc>0 {
			if ab>=bc {
				if c!=1 {
					fmt.Println(bc+1)
				} else {
					if b-1!=c {
						fmt.Println(ab+1)
					} else {
						fmt.Println(-1)
					}
				}
			} else {
				if b-1!=c {
					fmt.Println(ab+1)
				} else {
					if c!=1 {
						fmt.Println(ab+2)
					} else {
						fmt.Println(-1)
					}
				}
			}
		} else {
			if a!=b&&b!=c&&c!=a {
				fmt.Println(0)
				continue
			}
			

			if a==b&&b==c {
				if a<3 {
					fmt.Println(-1)
				} else {
					fmt.Println(3)
				}
				continue
			}

			if a==b {
				if a==1 {
					fmt.Println(-1)
					continue
				}
				if a-1!=c {
					fmt.Println(1)
				} else {
					if c!=1 {
						fmt.Println(2)
					} else {
						fmt.Println(-1)
					}
				}
				continue
			}

			if b==c {
				if c==1 {
					fmt.Println(-1)
					continue
				}
				if c-1!=a {
					fmt.Println(1)
				} else {
					if a!=1 {
						fmt.Println(2)
					} else {
						fmt.Println(-1)
					}
				}
				continue
			}

			if c==a {
				if c==1 {
					fmt.Println(-1)
				} else {
					if c-1==b {
						if b!=1 {
							fmt.Println(2)
						} else {
							fmt.Println(-1)
						}
					} else {
						fmt.Println(1)
					}
				}
			}
		}

	}

}

func abs(a int) int {
	if a<0 {
		return -a
	}
	return a
}
0