아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Javalhalla

시간 제한2초메모리 제한1024 MB

요약
부분 리스트가 원본 리스트와 같은 저장 공간을 공유하므로, 한쪽을 수정하면 다른 쪽에도 반영되는 작은 언어를 해석한다.
난이도

보통10점 중 7점

유형
구현, 시뮬레이션, 배열
정답자
아직 제출이 없습니다

문제

Немногие знают, что уже викинги имели дело с языками программирования. К сожалению, у них не было компьютеров, чтобы их запускать. Однако, некоторые их программы дошли до наших дней, и у нас наконец есть возможность их запустить. Вам необходимо исполнить одну из таких программ.

В этой задаче мы опишем один из таких языков, дошедший до наших дней под именем <<Javalhalla>>. В этом языке присутствуют два типа данных: целые числа и списки целых чисел. Все операции в этом языке производятся только со списками. Числа в списках нумеруются целыми числами, начиная с единицы. В этом языке присутствуют следующие операции:

  • List a = new List(x,y, ...,z). Создать новый список из чисел, перечисленных в скобках и присвоить ему имя aa.
  • List b = a.subList(from,to). Взять все числа из списка aa, находяшиеся на позициях от fromfrom до toto (from≤tofrom \le to) и составить из них список bb. Все изменения списка aa отражаются в соответствующих позициях списка bb, и наоборот. Обратите внимание на тестовые примеры и комментарии к ним.
  • a.set(i,x) Присвоить ii элементу списка aa значение xx
  • a.add(x) Добавить число xx в конец списка aa. Эта операция применима только в том случае, если список aa был создан так, как описано в первой операции (то есть список aa не был создан, как подсписок какого-либо другого списка).
  • a.get(i) Вывести ii элемент списка aa в отдельной строке

입력

В первой строке находится целое число nn (1≤n≤100,0001 \le n \le 100{\\,}000) --- количество строк в программе. Каждая из следующих nn строк описывает очередную команду в формате, описанном выше. Гарантируется, что никакой список не будет объявлен дважды, все обращения к спискам по индексу не выходят за границы списка. Все названия списков являются строками из строчных латинских букв длиной не более 10. Слова <<new>>, <<list>>, <<set>>, <<add>> и <<get>> являются зарезервироваными и не могут быть названием списка. Внутри скобок между аргументами и запятыми пробелов нет. Все числа во входном файле целые, положительные и не превосходят 10910^9. Суммарная длина списков, созданных с помощью первой операции, не превосходит 100,000100{\\,}000.

출력

Для каждый операции a.get(i)a.get(i) выведите ii элемент списка aa.

힌트

Обратите внимание, что в третьем тестовом примере четвертая операция изменила как список yy, так и cписок xx, а седьмая --- списки xx, yy и zz.

예제3

  1. 예제 1

    입력
    3
    List a = new List(2,3,5)
    List b = a.subList(2,3)
    b.get(1)
    
    예상 출력
    3
    
  2. 예제 2

    입력
    5
    List p = new List(2,4,8,16)
    p.get(4)
    List q = new List(3,9,27)
    q.add(5)
    q.get(4)
    
    예상 출력
    16
    5
    
  3. 예제 3

    입력
    13
    List x = new List(1,2,5,14,42)
    List y = x.subList(1,4)
    List z = y.subList(2,4)
    y.set(1,7)
    x.get(1)
    z.get(1)
    z.set(2,100)
    x.get(3)
    y.get(3)
    x.add(132)
    x.set(5,43)
    x.get(5)
    y.get(4)
    
    예상 출력
    7
    2
    100
    100
    43
    14