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

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

친구들

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

요약
친구들이 일직선 위의 칸에 서 있고, 한 친구가 빈 칸으로 점프할 때마다 모든 친구의 점수 합, 즉 각자가 속한 연속 구간 길이의 합을 구한다.
난이도

보통10점 중 7점

유형
구간, 구현, 정렬, 수학
정답자
아직 제출이 없습니다

문제

NN명의 친구가 게임을 한다. 게임은 LL개의 칸이 일렬로 놓인 판에서 진행되며, 칸에는 00부터 L−1L - 1까지 번호가 붙어 있고 칸 ii와 칸 i+1i+1은 서로 인접하다. 어느 순간에도 한 칸에는 친구가 많아야 한 명 서 있다. 게임의 각 단계에서 친구 한 명이 현재 칸에서 다른 (비어 있는) 칸으로 점프한다.

게임 중 어느 순간이든, 한 친구의 점수는 그 친구가 속한 가장 긴 연속한 친구 구간의 길이이다. 즉, 어떤 친구가 위치 xx에 서 있고 a,a+1,...,x−1,x,x+1,...,b−1,ba, a + 1, ..., x - 1, x, x + 1, ..., b - 1, b 위치에 친구가 있다면 그 친구의 점수는 b−a+1b - a + 1이다.

게임의 총점은 모든 친구의 점수를 더한 값이다. 게임 도중 여러 시점에서 친구들은 현재 총점이 얼마인지 궁금해한다.

입력

채점기는 다음 형식으로 입력을 읽는다.

  • 11번째 줄: N L Q
  • 22번째 줄: P[0] P[1] .. P[N - 1]
  • 33번째 줄부터 3+Q−13 + Q - 1번째 줄까지: 각 줄은 점프나 점수 질문 중 하나이다. 줄이 0 A B이면 AA에서 BB로 점프를 하고, 줄이 1이면 점수를 묻는다.

출력

각 점수 질문에 대해 채점기는 score()의 반환값을 한 줄에 출력한다.

제한

  • 1≤N≤100 0001 \le N \le 100\,000
  • 1≤L≤1091 \le L \le 10^9
  • S+J≤200 000S + J \le 200\,000

예제1

  1. 예제 1

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