일꾼 고용

면접 대비

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

요약
두 작업 유형의 일꾼 수가 같고 능률 합의 차이가 K 이하인 연속 구간의 개수를 센다.
난이도

보통10점 중 7점

유형
누적 합, 투 포인터, 이분 탐색, 수학
정답자
아직 제출이 없습니다

문제

영삼이는 공장을 운영하는 시뮬레이션 게임을 하고 있다. 영삼이는 공장을 원활하게 운영하기 위해 일꾼을 고용하려 한다.

현재 NN명의 일꾼이 일렬로 줄을 서 있으며, 이 중 연속된 일련의 일꾼들을 고용하고자 한다. 공장에는 두 가지 단계의 다른 작업이 있으며, ii번째 일꾼은 두 가지 작업 중 미리 배정된 하나의 작업 C_iC\_i만을 수행할 수 있다. 또한, ii번째 일꾼은 고유한 능률 W_iW\_i을 가지고 있다.

영삼이는 공장 운영의 효율성을 위해 다음과 같은 조건을 만족하는 일꾼들을 고용하려 한다:

  • 각 작업을 수행하는 일꾼의 수가 동일해야 한다.
  • 두 작업의 일꾼의 능률 합의 차이가 KK 이하가 되어야 한다.

영삼이를 위해서 이 조건을 만족하면서 고용할 수 있도록 일꾼을 선택하는 방법의 개수를 구해주자.

입력

첫 번째 줄에 테스트 케이스의 개수 TT가 주어진다.

각 테스트 케이스의 첫 번째 줄에는 NN과 KK가 공백으로 구분되어 주어진다.

두 번째 줄에는 일꾼의 작업 유형 C_1,C_2,⋯ ,C_NC\_1, C\_2, \cdots, C\_N이 차례대로 공백으로 구분되어 주어진다.

세 번째 줄에는 일꾼의 능률 W_1,W_2,⋯ ,W_NW\_1, W\_2, \cdots, W\_N이 차례대로 공백으로 구분되어 주어진다.

출력

각 테스트 케이스의 정답을 한 줄에 하나씩 차례대로 출력한다.

제한

  • 주어지는 모든 수는 정수이다.
  • 1≤T≤10,0001 \leq T \leq 10\\,000
  • 2≤N≤500,0002 \leq N \leq 500\\,000
  • 모든 테스트 케이스에서 NN의 합은 500,000500\\,000 이하이다.
  • 0≤K≤1090 \leq K \leq 10^9
  • 1≤C_i≤21 \leq C\_i \leq 2 (1≤i≤N1 \leq i \leq N)
  • 0≤W_i≤1090 \leq W\_i \leq 10^9 (1≤i≤N1 \leq i \leq N)

예제1

  1. 예제 1

    입력
    3
    3 0
    1 2 1
    1 1 1
    5 4
    1 2 2 1 2
    8 1 12 8 10
    3 10
    1 1 1
    3 5 6
    
    예상 출력
    2
    3
    0