페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#3235

XCorr 1초 128MB

문제

길이가 동일한 수열 X = (x0, x1, …, xn-1)Y = (y0, y1, …, yn-1)가 있다.

이 두 수열의 각 원소는 음이 아닌 정수이다.

다음은 n=5인 경우의 한 예이다.

 

X = (1, 0, 0, 0, 1)

Y = (0, 5, 2, 0, 1)

 

임의의 정수 t가 주어졌을 때 XCorr(t)는 다음과 같이 정의된다.

 XCorr(t)=\displaystyle\sum_{i=0}^{n-1}{x_iy_{i+t}}

(i < 0 이거나 i ≥ n 이면 x_i = y_i = 0으로 간주한다.)

 

예를 들어 t0, 1, -1일 때, XCorr(t)값은 다음과 같이 계산된다.

 XCorr(0) = x_0y_0 + x_1y_1 + \dots + x_{n-1}y_{n-1}

XCorr(1) = x_0y_1 + x_1y_2 + \dots + x_{n-1}y_n

회색 칸에 들어있는 부분은 계산결과에 영향을 주지 않음에 유의하라.  y_0는 계산식에 포함되지 않고 x_n-1은 곱해지는 y_n = 0이므로 계산 결과에 영향을 주지 않는다. 따라서 예시 수열 XY에서 XCorr(1)은 다음과 같이 계산할 수 있다.

1\times5+0\times2+0\times0+0\times1=5

XCorr(-1) = x_0y_{-1} + x_1y_0 + \dots + x_{n-1}y_{n-2}

임의의 t값의 범위 ( a ≤ t ≤ b)에 대해 XCorr(t)를 모두 구해서 더한 값 S(a, b)는 다음과 같이 정의된다.

S(a,b)=\displaystyle\sum_{a \le t \le b}{XCorr(t)}

수열 X, Yt의 범위 a, b가 주어졌을 때 S(a, b)를 구하는 프로그램을 작성하시오.

 


입력

표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 수열 X에서 0 이 아닌 정수의 개수 N이 주어진다.(수열의 길이 n이 아님).

다음 N개의 줄에는 수열 X의 각 양의 정수 값 xi에 대해 인덱스 ixi값이 인덱스의 오름차순으로 주어진다. 

다음 줄부터는 수열 YX와 동일한 방식으로 주어진다.  (Y에서 0 이 아닌 정수의 개수 M이 주어지고 다음 M개의 줄에는 수열 Y의 각 양의 정수 값 yi에 대해 인덱스 iyi값이 인덱스의 오름차순으로 주어진다.) 

다음 줄에는 t의 범위의 최솟값인 정수 a가 주어지고 그 다음 줄에는 t의 범위의 최댓값인 정수 b(a \le b)가 주어진다.

[제한사항]

모든 서브태스크에서 입력으로 주는 x_i, y_i 1 \leq x_i, y_i \leq 3,000이다.


출력

S(a,b)=\displaystyle\sum_{a \leq t \leq b}{XCorr(t)} 값을 정수로 출력한다.


부분문제

번호 점수 조건
#119점

1 ≤ N, M ≤ 3,000, 1 ≤ n ≤ 3,000, -3,000 ≤ a ≤ b ≤ 3,000

#242점

1 ≤ N, M ≤ 3 × 10^5, 1 ≤ n ≤ 3 × 10^5​, -3 × 10​^5​ ≤ a ≤ b ≤ 3 × 10​^5

#339점

1 ≤ N, M ≤ 3 × 10^5, 1 ≤ n ≤ 10^9, -10^9 ≤ a ≤ b ≤ 10^9


예제1

입력
3

01
11
21
3
01
12
23
-1
1
출력
14

예제2

입력
3

01
44
95
3
13
27
107
-2
2
출력
73

출처

KOI 전국 2018 고2

역링크