Профессиональный декоратор заборов

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

요약
구간을 한 색으로 칠하는 갱신과 두 구간의 일치 여부를 묻는 질의를 처리합니다.
난이도

어려움10점 중 8점

유형
세그먼트 트리, 해시맵, 문자열 매칭
정답자
아직 제출이 없습니다

문제

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

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

Для того, чтобы придать забору более спокойный и гармоничный вид, он несколько раз производит следующую операцию: выбирает некоторый цвет и отрезок, после чего перекрашивает этот отрезок забора в выбранный цвет. По своей творческой натуре, Смолокуров может в корне менять концепцию узора по несколько раз за час, поэтому иногда он перекрашивает одну и ту же планку несколько раз. Кроме того, Витезслав не хочет, чтобы какой-то узор повторялся слишком часто. Для того, чтобы избежать этого, он иногда проверяет, не совпадает ли один отрезок забора с другим.

Несложно догадаться, что и перекрашивание и проверки осуществляет Вася. Работа эта не самая простая, поэтому Вася просит ему помочь хотя бы с проверками на совпадение.

입력

Первая строка входного файла содержит одно целое число nn --- количество планок в заборе (1≤n≤100,0001 \le n \le 100\\,000). Вторая строка содержит nn целых чисел, разделенных пробелами --- цвета соответствующих планок.

Третья строка входного файла содержит одно целое число mm --- количество сравнений и перекрашиваний (1≤m≤100,0001 \le m \le 100\\,000). Следующие mm строк содержат описания заданий, который Вася получает от Витезслава: четыре целых числа qq, ll, rr и kk.

В случае перекрашивания q=0q = 0. Эта запись означает перекрашивание всех планок с ll по rr включительно на цвет kk (1≤l≤r≤n1 \le l \le r \le n). В запросе на сравнение q=1q = 1. Эта запись означает сравнение кусков забора длины kk начиная с позиций ll и rr соответственно (1≤l,r≤n−k+11 \le l, r \le n - k + 1, k>0k > 0).

Все числа во входном файле положительные и не превышают 100,000100\\,000.

출력

Выведите одну строку: для каждого запроса на сравнение выведите <<+>> в случае совпадения соответствующих кусков забора и <<->> в противном случае.

예제2

  1. 예제 1

    입력
    7
    1 2 1 3 1 2 1
    3
    0 4 5 2
    1 3 1 2
    1 3 1 3
    
    예상 출력
    +-
    
  2. 예제 2

    입력
    2
    1 2
    5
    1 1 2 1
    0 2 2 1
    1 1 2 1
    0 1 2 3
    1 1 1 2
    
    예상 출력
    -++