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

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

파인애플 피자

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

요약
원형 피자에서 손님들에게 시계 방향으로 연속한 조각을 나눠 줄 때, 나이 순서에 따라 어린 손님보다 토핑이 많은 조각을 받도록 하는 시작 위치의 수를 센다.
난이도

보통10점 중 6점

유형
배열, 투 포인터, 슬라이딩 윈도우, 정렬
정답자
아직 제출이 없습니다

문제

NN개의 조각으로 이뤄진 파인애플 피자 한 판이 있다. 각 피자 조각의 파인애플 토핑 개수는 시계 방향 순으로 a1,a2,⋯ ,aNa_1, a_2, \cdots, a_N개다. 파인애플 피자를 맛보기 위해 K(≤N)K(\le N)명의 손님이 줄을 서서 기다리고 있다. 당신은 첫 조각을 고른 후 시계 방향 순으로 피자를 한 조각씩 떼어 줄을 선 순서대로 손님에게 제공한다. 예를 들어 44명의 손님에게 토핑 개수가 aN−1a_{N-1}개, aNa_N개, a1a_1개, a2a_2개인 피자 조각을 순서대로 나눠줄 수 있다.

각 손님의 나이는 줄을 선 순서대로 b1,b2,⋯ ,bKb_1, b_2, \cdots, b_K이다. 손님들은 자신보다 나이가 어린 사람보다 파인애플 토핑을 많이 받아야 하고 나이가 같은 사람과는 같은 개수의 파인애플 토핑을 받아야 한다. 그렇지 못한 경우 손님은 그 자리에서 밥상을 엎어버린다.

손님들이 밥상을 엎지 않도록 피자 조각을 고를 수 있는 방법은 몇 가지일까?

입력

첫째 줄에 피자 조각의 개수 NN과 손님의 수 KK가 공백으로 구분되어 주어진다. (1≤K≤N≤100 0001 \leq K \leq N \leq 100\ 000)

둘째 줄에 각 피자 조각의 파인애플 토핑 개수를 나타내는 정수 a1,a2,⋯ ,aNa_1, a_2, \cdots, a_N가 공백으로 구분되어 주어진다. (0≤ai≤1090 \leq a_i \leq 10^9)

셋째 줄에 손님들의 나이를 나타내는 정수 b1,b2,⋯ ,bKb_1, b_2, \cdots, b_K가 공백으로 구분되어 주어진다. (0≤bi≤1090 \leq b_i \leq 10^9)

출력

손님들이 밥상을 엎지 않도록 피자 조각을 고를 수 있는 방법의 수를 출력한다.

예제2

  1. 예제 1

    입력
    5 4
    1 2 3 2 1
    2 1 1 2
    
    예상 출력
    1
    
  2. 예제 2

    입력
    5 4
    1 1 1 1 1
    9 9 9 9
    
    예상 출력
    5