結果
| 問題 |
No.885 アマリクエリ
|
| ユーザー |
|
| 提出日時 | 2019-09-29 02:34:13 |
| 言語 | Go (1.23.4) |
| 結果 |
AC
|
| 実行時間 | 751 ms / 2,000 ms |
| コード長 | 1,064 bytes |
| コンパイル時間 | 12,511 ms |
| コンパイル使用メモリ | 221,524 KB |
| 実行使用メモリ | 7,940 KB |
| 最終ジャッジ日時 | 2024-10-03 04:23:27 |
| 合計ジャッジ時間 | 14,337 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 19 |
ソースコード
// Package main provides
//
// File: main.go
// Author: ymiyamoto
//
// Created on Sun Sep 29 02:05:32 2019
//
package main
import (
"bufio"
"container/heap"
"fmt"
"os"
"strconv"
)
type pq []int
func (p pq) Len() int {
return len(p)
}
func (p pq) Swap(i, j int) {
p[i], p[j] = p[j], p[i]
}
func (p pq) Less(i, j int) bool {
return p[i] > p[j]
}
func (p *pq) Pop() interface{} {
n := len(*p)
x := (*p)[n-1]
*p = (*p)[:n-1]
return x
}
func (p *pq) Push(x interface{}) {
v, _ := x.(int)
*p = append(*p, v)
}
var sc = bufio.NewScanner(os.Stdin)
func nextInt() int {
sc.Scan()
i, e := strconv.Atoi(sc.Text())
if e != nil {
panic(e)
}
return i
}
func main() {
sc.Split(bufio.ScanWords)
n := nextInt()
p := make(pq, n)
sum := 0
for i := 0; i < n; i++ {
p[i] = nextInt()
sum += p[i]
}
heap.Init(&p)
q := nextInt()
for i := 0; i < q; i++ {
x := nextInt()
n, _ := heap.Pop(&p).(int)
for x <= n {
heap.Push(&p, n%x)
sum -= n
sum += n % x
n, _ = heap.Pop(&p).(int)
}
heap.Push(&p, n)
fmt.Println(sum)
}
}