COCI '23 Contest 5 #4 Rolete

View as PDF

Submit solution

Points: 15 (partial)
Time limit: 2.0s
Memory limit: 512M

Problem type

One Saturday Luka woke up from an afternoon nap and remembered: today is COCI! There was only one thing that he needed to do before the contest: raise the blinds.

Luka has n blinds in his room, where the i-th one is lowered by a_i centimeters from the top of the window. He can raise the blinds in two ways:

  • He can start lifting any singular blind manually. With this method, it takes him t seconds to raise the blind by 1 centimeter.
  • He can press a button, which starts raising all blinds in parallel at the same speed.

The speed at which the blinds are raised with a button is defined as follows: If all blinds are still rising, each will rise by 1 centimeter in s seconds. If r blinds have already risen to the top, that slows down the system. Then, it will take s + k \cdot r seconds for all the remaining blinds to rise by 1 centimeter.

COCI is about to start, and Luka wants to raise his blinds as soon as possible. Meanwhile, his brother Marin entered the room and asked him q questions: What is the minimum time you need to raise the blinds so that they are all lowered by at most h centimeters? Marin is interested in the answer for each question considering the initial state of the blinds.

They realized that there is not enough time to think about it before COCI. Fortunately, the problem has just appeared here as well! Help them solve it!

Note: Luka will always raise the blinds by an integer number of centimeters.

Input Specification

The first line contains integers n, t, s and k (1 \le n, t, s \le 10^{5}, 0 \le k \le 10^{5}), the number of blinds, the time required to raise a blind manually, the time required to raise a blind with a button and the slowing factor of parallel raising.

The second line contains n integers a_i (0 \le a_i \le 10^{5}), the initial state of the blinds.

The third line contains an integer q (1 \le q \le 10^{5}), the number of questions.

The fourth line contains q integers h_i (0 \le h_i \le 10^{5}), the required maximal blind height.

Output Specification

In the first and only line, print q numbers, the i-th of them being the minimum time for raising the blinds such that they are lowered by at most h_i centimeters.


Subtask Points Constraints
1 16 n, q, a_i, h_i \le 100
2 26 k = 0
3 32 q = 1
4 36 No additional constraints.

Sample Input 1

3 2 5 1
2 2 4
2 0 1

Sample Output 1

4 14 9

Explanation for Sample 1

To have all blinds lowered by at most 2 centimeters, Luka needs to raise the third blind by 2 centimeters. The quickest way to do this is to raise it manually. This will take him 4 seconds.

If all blinds need to be fully raised, Luka can first raise the third blind by 2 centimeters manually. Now he can press the button and let the blinds rise in parallel by 2 centimeters. In total, this will take 4 + 10 = 14 seconds.

Similarly, if the blinds need to be lowered by at most 1 centimeter, Luka will first raise the third blind by 2 centimeters, and then raise all blinds together by 1 centimeter. The total time for raising will be 9 seconds.

Sample Input 2

2 3 4 0
3 1
3 2 0

Sample Output 2

0 3 10

Sample Input 3

4 3 10 3
2 4 5 6
4 3 0

Sample Output 3

9 18 47


There are no comments at the moment.