Doodle Jump

Time limit: 0.2s Memory limit: 32MB Input: doodle-jump.in Output: doodle-jump.out

Susi\text{Susi} s-a apucat să grindeze un joc similar cu Doodle Jump\text{Doodle Jump}. În acest joc, scopul este să ghidezi un extraterestru săltăreț pe niște platforme plutitoare, încercând să ajungi cât de departe poți. Extraterestrul are un jump height K\text{jump height } K fixat, iar când acesta aterizează pe o platformă la înălțimea hh, va sări imediat, deplasându-se cu o viteză de o unitate pe secundă în sus până când ajunge la înălțimea h+Kh+K, apoi se deplasează cu aceeași viteză în jos, până când jucătorul îl va ghida spre o platformă.
Susi\text{Susi} este interesat de speedrun\text{speedrun}-ul acestui joc, așa că își pune întrebarea: "Care este timpul minim necesar (în secunde) pentru ca extraterestrul să ajungă de la prima platformă la înălțimea yy?"

Cerință

Se dau înălțimile a NN platforme din jocul jucat de Susi\text{Susi} și jump height\text{jump height}-ul extraterestrului. Determinați, pentru QQ valori yy, care este timpul minim necesar pentru ca extraterestrul să ajungă de la prima platformă la înălțimea yy.

Date de intrare

Pe prima linie a fișierului de intrare doodle-jump.in se găsesc trei numere întregi, N,K,QN, K, Q, cu semnificația din enunț. Pe a doua linie se găsesc NN numere întregi HiH_i, sortate în ordine crescătoare, reprezentând înălțimile platformelor din joc.
Pe următoarele QQ linii se află câte un număr întreg yy, reprezentând întrebările lui Susi\text{Susi}.

Date de ieșire

Pe cele QQ linii ale fișierului de ieșire doodle-jump.out se va găsi câte un număr întreg, reprezentând răspunsul la întrebarea corespunzătoare din fișierul de intrare.

Restricții și precizări

  • 1N,Q100 0001\leq N, Q\leq 100\ 000;
  • 1K1091\leq K\leq 10^9;
  • 1H1<H2<<HN10181\leq H_1<H_2<\dots <H_N\leq 10^{18};
  • H1y1018H_1\leq y\leq 10^{18} pentru fiecare întrebare yy;
  • Se garantează că extraterestrul poate ajunge la toate platformele și la toate înălțimile din întrebări dacă el pornește de la prima platformă;
  • Dacă extraterestrul aterizează pe o platformă la înălțimea hh, acesta se va deplasa după ecuația y(t)=h+KtKy(t)=h+K-\lvert t-K\rvert (tt reprezintă timpul de la începerea saltului) până când acesta aterizează pe următoarea platformă, ceea ce se poate realiza dacă tKt\geq K;
  • Se consideră că extraterestrul a ajuns la înălțimea yy dacă acesta a atins-o la un moment dat (nu neapărat când el se află în cădere);
  • În contextul problemei, extraterestrul se deplasează doar pe verticală.

Subtask-uri și punctare

Subtask Punctaj Restricții suplimentare
1 20 N,Q1 000N, Q\leq 1\ 000
2 30 K,Hi1 000 000K, H_i\leq 1\ 000\ 000
3 50 Fără restricții suplimentare

Exemplul 1

doodle-jump.in

7 4 7
2 5 7 8 12 15 17
3
6
11
13
16
19
21

doodle-jump.out

1
4
13
15
18
23
29

Explicație

Pentru a doua întrebare, extraterestrul are nevoie de un salt, care pornește de pe platforma de înălțime 22 și atinge înălțimea 66 în vârful lui.
Pentru a treia întrebare, extraterestrul are nevoie de 33 salturi:

  • unul de la platforma de înălțime 22 la cea de înălțime 55 ce durează (cu tot cu coborâre) 55 secunde;
  • unul de la platforma de înălțime 55 la cea de înălțime 88, care durează tot 55 secunde;
  • unul de la platforma de înălțime 88 ce atinge înălțimea 1111 în 33 secunde.

În total el a avut nevoie de 5+5+3=135+5+3=13 secunde pentru a ajunge la înălțimea 1111.

Log in or sign up to be able to send submissions!