結果
問題 | No.1071 ベホマラー |
ユーザー |
![]() |
提出日時 | 2020-06-05 21:40:31 |
言語 | C#(csc) (csc 3.9.0) |
結果 |
AC
|
実行時間 | 89 ms / 2,000 ms |
コード長 | 2,388 bytes |
コンパイル時間 | 989 ms |
コンパイル使用メモリ | 113,800 KB |
実行使用メモリ | 42,824 KB |
最終ジャッジ日時 | 2024-12-17 13:52:48 |
合計ジャッジ時間 | 3,452 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 5 |
other | AC * 20 |
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc) Copyright (C) Microsoft Corporation. All rights reserved.
ソースコード
using System;using System.Linq;using CompLib.Util;public class Program{public void Solve(){var sc = new Scanner();int n = sc.NextInt();int k = sc.NextInt();long x = sc.NextInt();long y = sc.NextInt();int[] a = sc.IntArray();long[] h = new long[n];for (int i = 0; i < n; i++){h[i] = (a[i] - 2 + k) / k;}// t <= n// xを t回する方が y1回の方が少ない// x*t <= y//Array.Sort(h, (l, r) => r.CompareTo(l));long maxT = y / x;if (maxT >= n){Console.WriteLine(h.Sum());return;}long ans = 0;long t = 0;for (int i = 0; i < maxT; i++){t += h[i];}ans = y * h[maxT] + x * (t - (h[maxT] * maxT));Console.WriteLine(ans);}public static void Main(string[] args) => new Program().Solve();}namespace CompLib.Util{using System;using System.Linq;class Scanner{private string[] _line;private int _index;private const char Separator = ' ';public Scanner(){_line = new string[0];_index = 0;}public string Next(){while (_index >= _line.Length){_line = Console.ReadLine().Split(Separator);_index = 0;}return _line[_index++];}public int NextInt() => int.Parse(Next());public long NextLong() => long.Parse(Next());public double NextDouble() => double.Parse(Next());public decimal NextDecimal() => decimal.Parse(Next());public char NextChar() => Next()[0];public char[] NextCharArray() => Next().ToCharArray();public string[] Array(){_line = Console.ReadLine().Split(Separator);_index = _line.Length;return _line;}public int[] IntArray() => Array().Select(int.Parse).ToArray();public long[] LongArray() => Array().Select(long.Parse).ToArray();public double[] DoubleArray() => Array().Select(double.Parse).ToArray();public decimal[] DecimalArray() => Array().Select(decimal.Parse).ToArray();}}