nth-root-upd

Time limit: 0.7s Memory limit: 32MB Input: Output:

Tihoi tocmai ce a ajuns la capitolul range queries la informatică. Ca de obicei, profesorul i-a dat o temă, însă din greșeală a incărcat o problemă mai grea. Tihoi vă roagă pe voi să îl ajutați. Aceasta este problema:

Cerință

Se dau un vector cu nn elemente si qq query-uri. Query-urile pot fi de două tipuri:

  • 11 stst drdr aa bb : elementele viv_i cu stidrst \leq i \leq dr devin min(vi,aib)min( v_i, a \sqrt[b]{i} );
  • 22 pozpoz : să se afișeze valoarea elementului de pe poziția pozpoz.

Date de intrare

Se citesc de la tastatură nn si qq urmate de nn numere si qq query-uri.

Date de ieșire

Se vor afișa rezultatele query-urilor de tip 22, in ordine, pe câte un rând.

Restricții și precizări

  • 1n,q200 0001 \leq n, q \leq 200 \ 000;
  • 1vi,a,b200 0001 \leq v_i, a, b \leq 200 \ 000;
  • n,q,vi,a,bNn, q, v_i, a, b \in \mathbb{N}.
  • Se garantează că toate valorile pot fi reprezentate pe tipurile de date standard din limbajul C++.
  • Fie răspunsul concurentului AA si răspunsul comisiei BB. Se admite răspunsul doar dacă AB<102.|A-B| < {10}^{-2}.

Exemplu

stdin

5 3
9 9 9 9 9
1 2 4 3 2
2 3
2 4

stdout

5.196152
6.000000

Explicație

Se poate verifica ușor folosind un calculator că acesta este rezultatul.

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