結果
| 問題 |
No.885 アマリクエリ
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2019-09-29 02:29:14 |
| 言語 | Go (1.23.4) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 896 bytes |
| コンパイル時間 | 11,291 ms |
| コンパイル使用メモリ | 238,488 KB |
| 実行使用メモリ | 8,088 KB |
| 最終ジャッジ日時 | 2024-10-03 04:23:10 |
| 合計ジャッジ時間 | 32,586 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 13 TLE * 6 |
ソースコード
// Package main provides
//
// File: main.go
// Author: ymiyamoto
//
// Created on Sun Sep 29 02:05:32 2019
//
package main
import (
"container/heap"
"fmt"
)
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)
}
func main() {
var n int
fmt.Scan(&n)
p := make(pq, n)
sum := 0
for i := 0; i < n; i++ {
fmt.Scan(&p[i])
sum += p[i]
}
heap.Init(&p)
var q int
fmt.Scan(&q)
for i := 0; i < q; i++ {
var x int
fmt.Scan(&x)
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)
}
}