Code Submission Evaluation System Login

IOI-leiri 2016

Taulukot


Task | Statistics


CSES - TaulukotCSES - Taulukot

Time limit:0.50 s Memory limit:128 MB

Tehtäväsi on toteuttaa tietorakenne, joka pitää yllä listaa, jonka jokainen alkio on taulukko. Aluksi listassa on vain yksi taulukko.

Rakenteen tulee tarjota seuraavat operaatiot:
  1. muuta taulukon $x$ alkion arvoa
  2. laske taulukon $x$ välin lukujen summa
  3. tee kopio taulukosta $x$ ja lisää se listan loppuun
  4. kopioi taulukon $x$ väli taulukkoon $y$
Taulukoissa on $n$ lukua, ja ne on indeksoitu $1,2,\ldots,n$.
Listassa olevat taulukot on indeksoitu $1,2,\ldots$

Syöte

Syötteen ensimmäisellä rivillä on kokonaisluku $n$, taulukon koko.

Seuraavalla rivillä on $n$ lukua $t_1,t_2,\ldots,t_n$, jotka kuvaavat taulukon alkusisällön.

Sitten syötteessä on luku $q$, kyselyjen määrä.

Lopuksi syötteessä on $q$ riviä, joista jokainen kuvaa yhden kyselyn.

Jos kysely on tyyppiä 1, rivi on muotoa "1 $x$ $k$ $u$". Tämä tarkoittaa, että taulukon $x$ alkion $k$ arvoksi tulee $u$.

Jos kysely on tyyppiä 2, rivi on muotoa "2 $x$ $a$ $b$". Tämä tarkoittaa, että täytyy laskea välin $[a,b]$ summa taulukossa $x$.

Jos kysely on tyyppiä 3, rivi on muotoa "3 $x$". Tämä tarkoittaa, että taulukosta $x$ tehdään kopio listan loppuun.

Jos kysely on tyyppiä 4, rivi on muotoa "4 $x$ $y$ $a$ $b$". Tämä tarkoittaa, että taulukosta $x$ kopioidaan väli $[a, b]$ taulukon $y$ vastaaviin kohtiin.

Tuloste

Ohjelmasi tulee tulostaa jokaisesta tyypin 2 kyselystä lukujen summa omalle rivilleen.

Rajat
Esimerkki

Syöte:
5
2 3 1 2 5
8
3 1
2 1 1 5
2 2 1 5
1 2 2 7
1 1 3 6
4 2 1 2 4
2 1 1 5
2 2 1 5


Tuloste:
13
13
17
17