結果
| 問題 |
No.1251 絶対に間違ってはいけない最小化問題
|
| コンテスト | |
| ユーザー |
ttakezawa
|
| 提出日時 | 2020-10-10 03:20:30 |
| 言語 | Go (1.23.4) |
| 結果 |
AC
|
| 実行時間 | 273 ms / 2,000 ms |
| コード長 | 1,051 bytes |
| コンパイル時間 | 15,655 ms |
| コンパイル使用メモリ | 233,672 KB |
| 実行使用メモリ | 14,780 KB |
| 最終ジャッジ日時 | 2024-07-20 15:32:55 |
| 合計ジャッジ時間 | 28,637 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 42 |
ソースコード
package main
import (
"bufio"
"fmt"
"os"
"sort"
)
type State struct {
A, B int
}
func main() {
N := ReadInt()
states := make([]*State, N)
a := ReadInts(N)
b := ReadInts(N)
for i := 0; i < N; i++ {
states[i] = &State{
A: a[i],
B: b[i],
}
}
sort.Slice(states, func(i, j int) bool {
return states[i].A < states[j].A
})
s := make([]int, N+1)
for i := 0; i < N; i++ {
s[i+1] = s[i] + states[i].B
}
for i := 0; i < N; i++ {
if s[i+1] >= (s[N]+1)/2 {
X := states[i].A
ans := 0
for j := 0; j < i; j++ {
ans += states[j].B * (X - states[j].A)
}
for j := i + 1; j < N; j++ {
ans += states[j].B * (states[j].A - X)
}
fmt.Println(X, ans)
return
}
}
}
var reader = bufio.NewReader(os.Stdin)
func Scan(a ...interface{}) {
if _, err := fmt.Fscan(reader, a...); err != nil {
panic(err)
}
}
func ReadInt() (i int) { Scan(&i); return }
func ReadString() (s string) { Scan(&s); return }
func ReadInts(n int) (a []int) {
for i := 0; i < n; i++ {
a = append(a, ReadInt())
}
return
}
ttakezawa