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

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

근시

면접 대비

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

요약
모두 0인 배열에서 갱신 질의는 각 위치에 삼각형 모양의 가중치를 더하고, 합 질의는 구간 합을 1e9+7로 나눈 나머지를 출력한다.
난이도

보통10점 중 7점

유형
누적 합, 수학, 구현, 배열
정답자
아직 제출이 없습니다

문제

2019 ICPC Asia Jakarta Regional Contest를 준비하던 Budi는 자료 구조 문제를 하나 발견했다. 그런데 문제를 잘못 읽었고, 자기가 생각한 문제가 원래 문제보다 훨씬 재미있다고 주장하며 이 문제를 만들었다.

정수 배열 A1..NA_{1..N}에 대한 함수 f(L,R)f(L, R)을, 모든 L≤i≤j≤RL \le i \le j \le R에 대해 부분 배열 Ai..jA_{i..j}의 각 원소를 1씩 증가시키는 연산으로 정의하자. 다시 말해 함수 f(L,R)f(L, R)은 다음과 같다(의사 코드).

function f(L, R):
  FOR i from L to R
    FOR j from i to R
      FOR k from i to j
        Ak = Ak + 1

NN개의 원소로 이루어진 배열 AA가 주어진다(처음에는 모든 i=1..Ni = 1..N에 대해 Ai=0A_i = 0). AA에 다음 두 종류의 질의를 QQ번 수행하라.

  • 1 L R — AA에 f(L,R)f(L, R)을 수행한다.
  • 2 L R — L≤i≤RL \le i \le R인 모든 AiA_i의 합을 출력한다.

입력

첫 줄에 두 정수 NN, QQ가 주어진다(1≤N,Q≤100 0001 \le N, Q \le 100\,000). NN은 AA의 크기이고 QQ는 질의의 수이다. 다음 QQ개의 줄에 각각 다음 형태의 질의가 주어진다.

  • 1 L R (1≤L≤R≤N1 \le L \le R \le N)
  • 2 L R (1≤L≤R≤N1 \le L \le R \le N)

두 번째 종류의 질의가 적어도 하나 있다.

출력

두 번째 종류의 질의마다, 입력에 주어진 순서대로 L≤i≤RL \le i \le R인 모든 AiA_i의 합을 한 줄에 출력한다. 값이 클 수 있으므로 출력을 1 000 000 0071\,000\,000\,007로 나눈 나머지를 출력한다.

예제1

  1. 예제 1

    입력
    9 7
    1 2 5
    1 4 9
    2 2 7
    1 3 3
    2 2 7
    1 1 5
    2 1 9
    
    예상 출력
    60
    61
    112