만드는 중입니다

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

DP (Small)

면접 대비

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

요약
각 질의 문제를 마지막으로 하는, 문제 번호와 난이도가 모두 증가하는 가장 긴 문제 순서의 길이를 구합니다.
난이도

보통10점 중 4점

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

문제

이 문제는 DP (Large)와 비교하면 문제 수, 질문 수, 난이도의 상한이 다른 문제이다.

DP는 DYNAMIC Porani의 약자이다.

DYNAMIC한 포라니는 풀 수 있는 문제를 DYNAMIC하게 푸는 것을 좋아한다. DYNAMIC한 풀이란 문제 번호와 난이도가 모두 증가하도록 가능한 한 많은 문제를 푸는 것이다.

방학을 맞은 포라니는 알고리즘 실력을 키우려고 선배에게 추천 문제 목록을 받았다. 게으른 포라니는 모든 문제를 풀고 싶지 않다. 선배가 어떤 문제를 풀라고 지시했을 때, 그 문제를 포함해서 DYNAMIC하게 문제를 푼다면 총 몇 문제를 풀어야 하는지 알아보자.

입력

첫 줄에 문제 수 NN(1≤N≤30001 \le N \le 3000)과 쿼리 수 QQ(1≤Q≤N1 \le Q \le N)가 공백으로 구분되어 주어진다.

두 번째 줄에 문제 번호 순서대로 각 문제의 난이도를 나타내는 음이 아닌 정수 DiD_i(1≤i≤N1 \le i \le N; 0≤Di≤30000 \le D_i \le 3000)가 공백으로 구분되어 주어진다. 문제 번호는 1부터 시작하는 연속된 양의 정수이다.

세 번째 줄부터 QQ개의 줄에 걸쳐 선배가 풀라고 한 문제 번호 AiA_i(1≤i≤Q1 \le i \le Q; 1≤Ai≤N1 \le A_i \le N)가 주어진다. 쿼리로 주어지는 문제 번호는 중복되지 않는다.

출력

QQ개의 줄에 걸쳐, ii번째 줄에 ii번째 선배의 지시에 따라 풀어야 하는 문제 수를 출력한다.

예제1

  1. 예제 1

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