Dvoboj

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

요약
배열에서 한 원소를 바꾸는 갱신과, 길이 2^k인 구간에서 인접한 카드끼리 |A-B|로 싸우는 라운드를 k번 진행한 뒤 마지막 카드의 힘을 묻는 질의를 처리합니다.
난이도

어려움10점 중 8점

유형
세그먼트 트리, 분할 정복, 수학, 배열
정답자
아직 제출이 없습니다

문제

Dvije faraonske žute linije su se pretvorile u oko...

Mladi Jusuf ima NN karata u svojem špilu, poredanih s lijeva na desno od 11 do NN. Svaka karta ima svoju snagu koju ćemo označavati s p_ip\_i. Jusuf se želi pripremiti za nadolazeći turnir, pa bi htio isprobati bitke između svojih karata te izmjenjivati karte u svojem špilu raznim drugim kartama koje je dobio na poklon od djeda. Ukupno će Jusuf napraviti QQ upita od kojih će svaki biti jednog od sljedeća dva tipa:

  • 11 ii rr - označava upit u kojem je Jusuf kartu na poziciji ii zamijenio novom kartom sa snagom rr
  • 22 ll kk - Jusuf će zamisliti imaginarnu bitku s 2k2^k karata, počevši od ll-te te završivši s l+2k−1 + 2^k − 1-tom, te zaderati se Vrijeme je za dvoboj!. Bitka će se odvijati u kk koraka. U svakom koraku, Jusuf će promatrati parove susjednih karata (prvu i drugu, treću i četvrtu itd.) te usporediti njihove snage, neka su u jednom paru to AA i BB. Karta s većom snagom će pobijediti, te će njezina nova snaga iznositi ∣A−B∣|A − B| (kojagod karta pobijedila). Ako su karte jednake snage, bitka će biti neizvjesna te će nasumična karta pobijediti i njezina će snaga biti 00. Karta koja je izgubila ne sudjeluje u preostalim rundama. Primijetite da nakon kk ovakvih koraka, ostat će točno jedna karta. Jusufa zanima njezina snaga!

입력

U prvom retku su prirodni brojevi NN i QQ.

U sljedećem retku nalazi se NN brojeva p_ip\_i (0≤p_i≤1090 ≤ p\_i ≤ 10^9) koji označavaju snage karata.

U sljedećih QQ redaka nalaze se opisi upita koji odgovaraju tekstu zadatka.

Za svaki upit tipa 11 vrijedi 1≤i≤N1 ≤ i ≤ N te 0≤r≤1090 ≤ r ≤ 10^9.

Za svaki upit tipa 22 vrijedi 1≤l≤N1 ≤ l ≤ N te 1≤l+2k−1≤N1 ≤ l + 2^k − 1 ≤ N.

출력

Za svaki upit tipa 2 potrebno je ispisati snagu završne karte nakon svih k koraka.

힌트

Pojašnjenje prvog probnog primjera:

U prvom upitu karte će se ovako mijenjati tijekom koraka: (4,8,2,0)→(4,2)→(2)(4, 8, 2, 0) → (4, 2) → (2)

U trećem upitu karte će se ovako mijenjati tijekom koraka: (8,2)→(6)(8, 2) → (6)

예제3

  1. 예제 1

    입력
    5 3
    4 8 2 0 7
    2 1 2
    1 1 9
    2 2 1
    
    예상 출력
    2
    6
    
  2. 예제 2

    입력
    8 6
    1 2 3 4 5 6 7 8
    2 1 3
    1 4 1
    1 7 3
    2 1 3
    1 2 100
    2 2 2
    
    예상 출력
    0
    3
    93
    
  3. 예제 3

    입력
    9 5
    1 0 2 0 4 1 3 2 8
    2 2 3
    2 1 3
    1 5 1
    1 6 4
    2 4 2
    
    예상 출력
    2
    1
    0