結果
| 問題 |
No.1071 ベホマラー
|
| コンテスト | |
| ユーザー |
semisagi
|
| 提出日時 | 2020-06-05 21:31:23 |
| 言語 | Swift (6.0.3) |
| 結果 |
AC
|
| 実行時間 | 99 ms / 2,000 ms |
| コード長 | 1,131 bytes |
| コンパイル時間 | 3,548 ms |
| コンパイル使用メモリ | 134,704 KB |
| 実行使用メモリ | 15,788 KB |
| 最終ジャッジ日時 | 2024-11-30 18:24:49 |
| 合計ジャッジ時間 | 6,802 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 5 |
| other | AC * 20 |
ソースコード
class Scanner {
private var stack = [String]()
private var index = 0
func peek() -> String {
if stack.count == index {
stack += readLine()!.split(separator: " ").map{ String($0) }
}
return stack[index]
}
func next() -> String {
let value = peek()
index += 1
return value
}
func nextInt() -> Int {
return Int(next())!
}
func nextDouble() -> Double {
return Double(next())!
}
}
extension String {
var characters: [Character] {
self.map{ $0 }
}
}
var scanner = Scanner()
let N = scanner.nextInt()
let K = scanner.nextInt()
let X = scanner.nextInt()
let Y = scanner.nextInt()
var A = [Int]()
for _ in 0 ..< N {
A.append(scanner.nextInt() - 1)
}
A.sort()
func howmany(_ a: Int, _ b: Int) -> Int {
if a < 0 { return 0 }
return a / b + (a % b != 0 ? 1 : 0)
}
var all = 0
var answer = 0
for i in 0 ..< N {
let k = howmany(A[i] - K * all, K)
if Y < (N - i) * X {
all += k
answer += Y * k
} else {
answer += X * k
}
}
print(answer)
semisagi