Stonks

Time limit: 0.2s Memory limit: 32MB Input: stonks.in Output: stonks.out

Un investitor urmărește evoluția prețului unei acțiuni timp de NN zile consecutive. Prețul acțiunii în ziua ii este dat de valoarea AiA_i.

Dorind să facă o analiză retroactivă, investitorul încearcă să identifice „perioada de aur”, adică intervalul de zile în care ar fi putut obține cel mai mare profit net.

O perioadă este definită printr-un interval de zile [Z1,Z2][Z_1, Z_2], unde 1Z1Z2N1 \leq Z_1 \leq Z_2 \leq N.

Pentru un astfel de interval:

  • Se determină prețul maxim atins în interval:
    PretMax=max(AZ1,AZ1+1,,AZ2)PretMax = \max(A_{Z_1}, A_{Z_1+1}, \dots, A_{Z_2})
  • Se determină prețul minim atins în interval:
    PretMin=min(AZ1,AZ1+1,,AZ2)PretMin = \min(A_{Z_1}, A_{Z_1+1}, \dots, A_{Z_2})

Câștigul potențial brut al perioadei este:

PretMaxPretMinPretMax - PretMin

Totuși, banca percepe o taxă de administrare egală cu numărul de zile scurse între începutul și sfârșitul perioadei, adică:

Z2Z1Z_2 - Z_1

Astfel, profitul net al unei perioade este:

ProfitNet=(PretMaxPretMin)(Z2Z1)ProfitNet = (PretMax - PretMin) - (Z_2 - Z_1)

Cerință

Determinați profitul net maxim care s-ar fi putut obține alegând în mod optim o perioadă [Z1,Z2][Z_1, Z_2].

Date de intrare

Fișierul de intrare stonks.in conține:

  • Pe prima linie, un număr întreg NN, reprezentând numărul de zile.
  • Pe a doua linie, NN numere întregi A1,A2,,ANA_1, A_2, \dots, A_N, reprezentând prețurile acțiunii în fiecare zi.

Date de ieșire

Fișierul de ieșire stonks.out va conține un singur număr întreg, reprezentând profitul net maxim posibil.

Restricții și precizări

  • 1N1 000 0001 \leq N \leq 1 \ 000 \ 000
  • 0Ai1090 \leq A_i \leq 10^9
  • 1Z1Z2N1 \leq Z_1 \leq Z_2 \leq N
# Puncte Restricții
1 5 toate cele NN numere sunt egale
2 10 1N1001 \le N \le 100
3 20 1N1 0001 \le N \le 1 \ 000
4 30 1N100 0001 \le N \le 100 \ 000
5 35 Fără restricții suplimentare

Exemplu

stonks.in

5
5 3 4 1 2

stonks.out

2

Explicație

Pentru intervalul [3,4][3,4]:

PretMax=4,PretMin=1PretMax = 4,\quad PretMin = 1


ProfitNet=(41)(43)=31=2ProfitNet = (4 - 1) - (4 - 3) = 3 - 1 = 2

Acesta este profitul net maxim posibil.

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