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

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

데자 뷰

시간 제한5초메모리 제한512 MB

요약
배열에서 점 갱신이 일어나는 가운데, l 이후에서 시작하는 길이 4인 증가 부분수열을 끝내는 가장 작은 위치 d를 찾는 질의에 답한다.
난이도

어려움10점 중 9점

유형
세그먼트 트리, 동적 계획법, 이분 탐색, 그리디
정답자
아직 제출이 없습니다

문제

길이 10510^5인 배열과 10510^5가지 종류의 쿼리 10510^5개가 주어졌을 때 뭔가를 하는, 그런 문제가 아주 많다는 말이 맞을지도 모른다 (어쩌면 너무 많을지도).

- Um_nik

배열 x1,x2,…,xnx_1, x_2, \ldots, x_n이 주어진다.

이 배열에 두 종류의 쿼리를 수행해야 한다.

  • ii와 yy가 주어지면 xi=yx_i = y로 설정한다.
  • ll이 주어지면 l≤a<b<c<dl \leq a < b < c < d이고 xa<xb<xc<xdx_a < x_b < x_c < x_d인 모든 튜플 (a,b,c,d)(a,b,c,d) 중 가장 작은 dd를 찾는다. 그러한 튜플이 없으면 없다고 답한다.

입력

첫째 줄에 두 정수 n,qn, q가 주어진다 (1≤n,q≤500 0001 \leq n,q \leq 500\,000). nn은 배열의 원소 수, qq는 쿼리의 수이다.

둘째 줄에 nn개의 정수 x1,x2,…,xnx_1, x_2, \ldots, x_n이 주어진다 (1≤xi≤1091 \leq x_i \leq 10^9).

다음 qq개의 줄에 각각 쿼리의 설명이 주어진다.

줄의 첫 번째 정수가 11이면 다음 두 정수는 ii와 yy이며 (1≤i≤n1 \leq i \leq n, 1≤y≤1091 \leq y \leq 10^9), 첫 번째 종류의 쿼리를 나타낸다.

그렇지 않으면 줄의 첫 번째 정수가 22이고 다음 정수는 ll이며 (1≤l≤n1 \leq l \leq n), 두 번째 종류의 쿼리를 나타낸다.

출력

두 번째 종류의 쿼리마다 l≤a<b<c<dl \leq a < b < c < d이고 xa<xb<xc<xdx_a < x_b < x_c < x_d인 모든 튜플 (a,b,c,d)(a,b,c,d) 중 가장 작은 dd를 출력한다. 그러한 튜플이 없으면 "-1"을 출력한다.

예제1

  1. 예제 1

    입력
    11 10
    1 2 3 4 5 10 9 8 7 6 8
    2 1
    1 3 2
    2 1
    1 1 2
    2 1
    2 5
    2 6
    1 9 6
    1 10 7
    2 5
    
    예상 출력
    4
    5
    6
    -1
    -1
    11