結果

問題 No.2953 Maximum Right Triangle
ユーザー ID 21712
提出日時 2025-03-18 03:06:16
言語 Go
(1.23.4)
結果
WA  
実行時間 -
コード長 1,009 bytes
コンパイル時間 13,948 ms
コンパイル使用メモリ 244,928 KB
実行使用メモリ 7,324 KB
最終ジャッジ日時 2025-03-18 03:06:31
合計ジャッジ時間 14,678 ms
ジャッジサーバーID
(参考情報)
judge2 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 2 WA * 4
権限があれば一括ダウンロードができます

ソースコード

diff #

package main

import . "fmt"
import . "math/big"

func main() {
	var t int
	Scan(&t)
	for ;t>0;t-- {
		var d,ax,ay int64
		Scan(&d, &ax, &ay)
		switch {
			case ax == 0:
				Println(d*ay)
			case ay == 0:
				Println(d*ax)
			default:
				m := new(Int).GCD(nil, nil, NewInt(ax), NewInt(ay)).Int64()
				dx,dy := ay/m, ax/m
				var s int64
				if bx,by := ax-(ax/dx)*dx,ay+(ax/dx)*dy; (0<=bx&&bx<ax)&&(ay<by&&by<=d) {
					tmp := by*(ax*2-bx)-dx*dy*2
					s = max(s, tmp)
				}
				if bx,by := ax-((d-ay)/dy)*dx,ay+((d-ay)/dy)*dy; (0<=bx&&bx<ax)&&(ay<by&&by<=d) {
					tmp := by*(ax*2-bx)-dx*dy*2
					s = max(s, tmp)
				}
				if bx,by := ax+(ay/dy)*dx,ay-(ay/dy)*dy; (ax<by&&by<=d)&&(0<=by&&by<ay) {
					tmp := ay*(bx*2-ax)-dx*dy*2
					s = max(s, tmp)
				}
				if bx,by := ax+((d-ax)/dx)*dx,ay-((d-ax)/dx)*dy; (ax<bx&&bx<=d)&&(0<=by&&by<ay) {
					tmp := ay*(bx*2-ax)-dx*dy*2
					s = max(s, tmp)
				}
				Println(s)
		}
	}
}

func max(a, b int64) int64 {
	if a > b {
		return a
	} else {
		return b
	}
}
0