만드는 중입니다

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

슬라스티차르니차

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

요약
양 끝 중 한쪽에서 d개를 연속으로 가져가고 모두 달콤함이 s 이상이어야 하는 손님을 순서대로 최대 몇 명까지 응대할 수 있는지 구합니다.
난이도

보통10점 중 6점

유형
동적 계획법, 배열, 이분 탐색
정답자
아직 제출이 없습니다

문제

새로 문을 연 빵집이 동네에 생겼습니다! 도도 빵집의 맛있는 케이크를 와서 맛보세요!

제빵사들이 케이크 nn개를 준비했습니다. ii번째 케이크의 달콤함은 aia_i입니다. 케이크는 주어진 순서대로 긴 테이블 위에 진열되어 있습니다. 동네에서 가장 좋은 케이크를 주문하려고 qq명이 줄을 서 있습니다. 각 손님의 주문은 "달콤함이 sis_i 이상인 케이크 did_i개를 사고 싶습니다"라는 형식입니다.

도리안은 독특한 방식으로 손님을 응대합니다. 테이블에서 연속된 케이크 did_i개를 건넵니다. 테이블을 최대한 깔끔하게 유지하려고 테이블의 왼쪽 끝이나 오른쪽 끝에 있는 케이크만 건넵니다. 이 방식으로는 많은 손님을 응대할 수 없다는 것을 알게 된 도리안은, 손님을 응대하기 전에 테이블 양 끝에서 케이크를 몇 개(0개일 수도 있음) 먹습니다.

도리안이 손님의 주문을 맞출 수 없으면 그날 빵집 문을 닫습니다. 문을 닫기 전까지 응대할 수 있는 손님은 최대 몇 명입니까?

입력

첫째 줄에 케이크 개수 nn과 줄을 선 사람 수 qq가 주어집니다 (1≤n≤50001 \le n \le 5000, 1≤q≤2⋅1051 \le q \le 2 \cdot 10^5).

둘째 줄에는 nn개의 수 aia_i (1≤ai≤1091 \le a_i \le 10^9)가 주어집니다. 여기서 aia_i는 ii번째 케이크의 달콤함입니다.

이어지는 qq개의 줄에는 각각 두 정수 did_i, sis_i (1≤di≤n1 \le d_i \le n, 1≤si≤1091 \le s_i \le 10^9)가 주어지며, 이는 줄에서 ii번째 손님의 주문입니다.

출력

첫 번째이자 유일한 줄에 도리안이 응대할 수 있는 손님 수를 출력합니다.

힌트

세 번째 예제에 대한 설명: 도리안은 먼저 왼쪽에서 케이크 하나를 먹고, 다음 케이크 세 개(달콤함 33, 22, 55)를 첫 번째 손님에게 줍니다. 이어서 왼쪽에서 케이크 하나를 더 먹고, 다음 케이크 두 개(달콤함 44, 66)를 두 번째 손님에게 줍니다. 세 번째 손님은 오른쪽 끝의 케이크(달콤함 11)를 받고, 네 번째 손님은 마지막 케이크(달콤함 22)를 받습니다. 도리안에게 남은 케이크가 없으므로 마지막 손님은 빈손으로 돌아갑니다.

예제3

  1. 예제 1

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

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

    입력
    9 5
    1 3 2 5 1 4 6 2 1
    3 2
    2 3
    1 1
    1 2
    1 1
    
    
    예상 출력
    4