結果
| 問題 |
No.3288 Sloppy Land Grading
|
| コンテスト | |
| ユーザー |
ID 21712
|
| 提出日時 | 2025-10-20 03:02:50 |
| 言語 | Go (1.23.4) |
| 結果 |
AC
|
| 実行時間 | 261 ms / 2,000 ms |
| コード長 | 982 bytes |
| コンパイル時間 | 12,300 ms |
| コンパイル使用メモリ | 233,292 KB |
| 実行使用メモリ | 7,956 KB |
| 最終ジャッジ日時 | 2025-10-20 03:03:08 |
| 合計ジャッジ時間 | 17,365 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 16 |
ソースコード
package main
import . "fmt"
import . "os"
import bf "bufio"
// 中学数学レベル?
// 同じ値をPとしてPにする総コストK=f(P)
// f(P) = x*|A-P|+y*|B-P|+z*|C-P|
// Pを横軸、Kを縦軸、としてグラフを描けば答えは明瞭
// P=AとP=BとP=Cの3点のみが極値となりえて、そのどれかが最小のKを与える
// 仮に A < B < C とするなら
// P < A は単調減少(直線で傾きは-x-y-z)
// A < P < B は単調に変化(直線で傾きはx-y-z)
// B < P < C は単調に変化(直線で傾きはx+y-z)
// C < P は単調増加(直線で傾きはx+y+z)
func abs(v int) int {
if v < 0 {
return -v
} else {
return v
}
}
func main() {
rd:=bf.NewReader(Stdin)
wr:=bf.NewWriter(Stdout)
defer wr.Flush()
var t int
Fscan(rd, &t)
for ; t > 0; t-- {
var a,b,c,x,y,z int
Fscan(rd,&a,&b,&c,&x,&y,&z)
v1 := abs(b-a)*y+abs(c-a)*z
v2 := abs(a-b)*x+abs(c-b)*z
v3 := abs(a-c)*x+abs(b-c)*y
Fprintln(wr, min(v1,v2,v3))
}
}
ID 21712