結果

問題 No.3534 Make Many Fences
コンテスト
ユーザー ID 21712
提出日時 2026-05-10 00:53:26
言語 Go
(1.26.1)
コンパイル:
env GOCACHE=/tmp go build _filename_
実行:
./Main
結果
AC  
実行時間 110 ms / 1,000 ms
コード長 1,110 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 18,787 ms
コンパイル使用メモリ 291,248 KB
実行使用メモリ 6,400 KB
最終ジャッジ日時 2026-05-10 00:53:50
合計ジャッジ時間 17,479 ms
ジャッジサーバーID
(参考情報)
judge1_1 / judge2_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 9
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

package main

import . "fmt"
import . "os"
import bf "bufio"

func main() {
	rd:=bf.NewReader(Stdin)
	wr:=bf.NewWriter(Stdout)
	defer wr.Flush()
	
	var t int
	Fscan(rd,&t)
	for ; t > 0 ; t-- {
		var n, m int
		Fscan(rd, &n,&m)
		ans := solve(n, m)
		Fprintln(wr,ans)
	}
	
}

func solve(n, m int) int {
	c := min(n/4, m/2)
	n -= 4*c
	m -= 2*c
	ans := 3*c
	c = n/10
	n -= 10*c
	ans += 6*c
	c = n/6
	ans += 3*c
	return ans
}

func solve2(n, m int) int {
	ans := 0
	for c := max(n,m); c > 0; c-- {
		nn := c*4
		mm := c*2
		if mm > m {
			need := mm-m
			x := (need+3)/4
			nn += 2*x
		}
		if nn > n {
			continue
		}
		ans = 3*c
		break
	}
	return ans
}

func solve3(n,m int) int {
	c := 0
	for k:=max(n,m); k>=0; k-- {
		nn := n-2*k
		mm := m+4*k
		c = max(c, min(nn/4,mm/2))
	}
	return c*3
}

func init() {
	check()
}

func check() {
	for n:=0; n<=200; n++ {
		for m:=0; m<=200; m++ {
			a1 := solve(n,m)
			a2 := solve2(n,m)
			a3 := solve3(n,m)
			if a1 != a2 || a1 != a3 {
				println("a1=",a1)
				println("a2=",a2)
				println("a3=",a3)
				println("n=",n)
				println("m=",m)
				panic("WA")
			}
		}
	}
}
0