RMQ
시간 제한3초메모리 제한1024 MB
순열 A가 주어질 때, 각 질의마다 l <= i <= r, s <= j <= e 범위의 모든 부분 구간 [i, j]에서 최솟값과 최댓값의 곱을 구하고 합을 10^9+7로 나눈 나머지를 출력합니다.
문제
길이 의 수열 가 주어진다. 각 원소는 이상 이하의 정수이고, 같은 값은 한 번만 나온다.
수열 에 대한 RMQ는 보통 Range Minimum Query 또는 Range Maximum Query를 뜻한다. 인 과 이 주어졌을 때 또는 를 구하는 쿼리이다.
어떤 쿼리도 포기하지 못하는 종영이는 새로운 RMQ를 만들기로 했다. 종영이가 만든 RMQ(Range Mueonga Query)는 이다.
모든 쿼리 값을 기억하려고 행 열의 2차원 배열 를 만들었다. 행 열의 값 는 이면 이고, 이면 이다.
쿼리 중독증이 있는 종영이는 이제 에 대해 2차원 쿼리를 날리고 싶어졌다. 이고 인 정수 네 개 , , , 가 주어질 때마다, 이고 인 모든 , 에 대해 의 합을 구하자.
입력
첫째 줄에 과 가 공백으로 구분되어 주어진다. (, )
둘째 줄에 이 공백으로 구분되어 주어진다. ()
셋째 줄부터 개의 줄에 걸쳐 쿼리가 주어진다. 각 쿼리는 공백으로 구분된 , , , 로 이루어진다. (, )
출력
각 쿼리의 답을 로 나눈 나머지를 한 줄에 하나씩 출력한다.