만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

피라미드

면접 대비

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

요약
길이가 같은 A 구간과 B 구간을 주면, 인접한 피라미드끼리 돌을 옮겨 A[L..R]을 B[X..Y]로 바꿀 수 있는지 판정합니다.
난이도

쉬움10점 중 3점

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

문제

파라오 쿠푸가 위대한 통치자였다는 것은 누구나 알지만, 그가 패션에 깊은 관심이 있었다는 사실은 잘 알려져 있지 않다. 옛날 그에게는 0번부터 N-1번까지 번호가 붙은 피라미드 N개가 있었고, i번 피라미드(0≤i<N0 \le i < N)는 A[i]A[i]개의 돌로 이루어져 있었다. 그는 그해 가장 유행하는 피라미드를 실은 최신 카탈로그도 갖고 있었다. 카탈로그에는 0번부터 N-1번까지 번호가 붙은 피라미드 N개가 있고, i번 피라미드(0≤i<N0 \le i < N)는 B[i]B[i]개의 돌로 이루어져 있다.

0≤x≤y<N0 \le x \le y < N인 모든 xx, yy에 대해 피라미드 구간 A[x..y]A[x..y]는 수열 A[x],A[x+1],…,A[y]A[x], A[x + 1], \dots, A[y]이다. 구간 B[x..y]B[x..y]도 같은 방식으로 정의한다.

쿠푸는 매일 카탈로그를 보고 R−L=Y−XR - L = Y - X를 만족하는 두 구간 A[L..R]A[L..R]과 B[X..Y]B[X..Y]를 고른다. LL, RR, XX, YY의 값은 날마다 달라질 수 있다. 그다음 구간 A[L..R]A[L..R]을 B[X..Y]B[X..Y]로 바꿀 수 있는지 알고 싶어 한다. 변환은 구간 안의 피라미드에서 돌 하나를 가져와 구간 안의 인접한 피라미드로 옮기는 동작을 원하는 만큼 반복하는 것이다.

이 문제에서는 정수 LL, RR, XX, YY가 주어졌을 때 A[L..R]A[L..R]을 B[X..Y]B[X..Y]로 바꿀 수 있는지 판단해야 한다. 각 피라미드의 돌 개수는 변하지 않는다. 쿠푸는 한 구간을 다른 구간으로 바꿀 수 있는지만 궁금해한다.

제한

제한 시간: 1000 ms. 메모리 제한: 1024 MB.

  • 1≤N≤1000001 \le N \le 100000
  • 1≤Q≤1000001 \le Q \le 100000
  • 1≤A[i]≤1091 \le A[i] \le 10^9
  • 1≤B[i]≤1091 \le B[i] \le 10^9

can_transform 호출마다 다음을 만족한다.

  • 0≤L≤R<N0 \le L \le R < N
  • 0≤X≤Y<N0 \le X \le Y < N
  • R−L=Y−XR - L = Y - X

예제1

  1. 예제 1

    입력
    1 1
    1
    1
    0 0 0 0
    
    예상 출력
    YES