수열과 장난
시간 제한3초메모리 제한1024 MB
배열에서 원소 삭제, 구간에 최솟값 빼기와 최댓값 더하기 갱신을 처리하고, 부분 배열의 서로 다른 세 번째로 큰 값을 구합니다.
문제
"음 심심한걸? 어디 장난칠 대상이 없나?"
"오 저기 마침 수열이 보이네? 한 번 재밌게 만들어 보자!"
출제자의 레이더에 걸려버린 우리의 친구, 수열 .
출제자의 레이더에 걸린 모든 것은 제 모습을 찾기 힘들다고 전해진다... 이번엔 가 걸려버렸으니...
출제자는 악행으로 유명해서 어떤 장난을 치는지, 어떤 순서로 치는지도 전부 알려져 있다.
출제자는 다음과 같은 3가지 방법으로 장난을 친다.
- 1 : 번째에 있는 수를 제거한다. 이 수를 제거하면 의 원소들의 인덱스가 바뀔 수 있다.
- 2 : 앞에서부터 번째부터 번째까지의 모든 수에서, 그 구간에 있는 수 중 최솟값을 뺀다.
- 3 : 앞에서부터 번째부터 번째까지의 모든 수에, 그 구간에 있는 수 중 최댓값을 더한다.
출제자는 장난을 치면서 궁금증이 생겼다. 다음과 같이 의 범위를 말해주면 우리의 수열은 3번째로 큰 수를 알려줘야 한다.
- 4 : 앞에서부터 번째부터 번째까지의 범위를 말해준다. 그러면 , , ..., 원소 중 3번째로 큰 값을 알려준다. 단, 같은 수는 하나로 세고, 3번째로 큰 수가 존재하지 않으면
-1을 대답한다.
입력
첫 번째 줄에 가 장난을 당하기 전의 길이 ()이 주어진다.
두 번째 줄에 장난을 당하기 전의 수열 가 주어진다. 의 원소는 이하의 양의 정수이다.
세 번째 줄에 장난의 횟수와 를 궁금해하는 횟수를 합한 값 ()가 주어진다.
네 번째 줄부터 개의 줄에 장난의 종류와 위치, 또는 출제자가 궁금해하는 의 범위가 한 줄에 하나씩 주어진다.
1번 장난으로 수열의 길이가 0이 되지 않는다. 2번과 3번 장난에서 은 음이 아닌 정수이고, 은 1 이상이며, 은 장난을 칠 때의 수열 길이를 넘지 않는다. 3번 장난으로 증가한 수열의 원소는 이하이다. 출제자는 적어도 한 번은 궁금해한다.
출력
출제자가 궁금해할 때마다 정답을 한 줄에 하나씩 출력한다.