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

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

홍익 투어리스트

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

요약
원 위의 구역에서 랜드마크를 켜고 끄며 시계 방향 이동과 현재 위치에서 가장 가까운 랜드마크까지의 거리 질의를 처리한다.
난이도

보통10점 중 7점

유형
세그먼트 트리, 이분 탐색, 배열, 시뮬레이션
정답자
아직 제출이 없습니다

문제

도현이는 홍익 투어리스트가 되어 홍익대학교를 견학하려고 한다. 홍익대학교는 NN개의 구역이 원형으로 배치된 모습이다. 11번 구역에서 시계 방향으로 각각 22번, ... , NN번 구역이 존재하고, NN번 구역에서 시계 방향으로 한 칸 더 갈 경우 11번 구역으로 도착한다.

홍익대학교에는 명소가 존재한다. 도현이는 알찬 투어를 위해 명소만을 방문하려 한다. 도현이는 11번 구역에 서있다.

도현이를 위해 다음과 같은 쿼리를 수행하는 프로그램을 작성해보자.

  • 11 ii : ii번 구역이 명소가 아니었다면 명소로 지정되고, 명소였다면 지정이 풀리게 된다. (1≤i≤N1 \leq i \leq N)
  • 22 xx : 도현이가 시계방향으로 xx만큼 이동한다. (1≤x≤1091 \leq x \leq 10^9)
  • 33 : 도현이가 명소에 도달하기 위해 시계방향으로 최소 몇 칸 움직여야 하는 지 출력한다. 명소가 존재하지 않는 경우 −1-1을 출력한다.

입력

첫째 줄에 구역의 개수 NN (1≤N≤500 0001 \leq N \leq 500\,000)과 쿼리의 개수 QQ (1≤Q≤100 0001 \leq Q \leq 100\,000)가 정수로 주어진다.

둘째 줄에 길이 NN의 수열 AA가 주어진다. ii번째 구역이 명소라면 AiA_i는 11, 그렇지 않다면 00이다.

셋째 줄부터 QQ줄에 걸쳐 본문의 쿼리가 주어진다. 33번 쿼리는 하나 이상 존재한다.

출력

33번 쿼리가 주어질 때마다 해당 쿼리의 값을 출력한다.

예제1

  1. 예제 1

    입력
    5 7
    0 1 0 0 1
    3
    1 2
    3
    2 9
    3
    1 5
    3
    
    예상 출력
    1
    4
    0
    -1