우표 조각 조합
면접 대비시간 제한7초메모리 제한1024 MB
일렬로 놓인 묶음 크기들이 주어질 때, 앞에서 몇 개와 뒤에서 몇 개를 떼어내 합으로 목표 개수를 만들 수 있는지 묻는 질의에 답한다.
문제
택배를 받으러 가게에 들른 뒤 포장하고 부치려고 한다. 부치려면 우표가 특정 개수만큼 필요하고, 사용할 수 있는 우표 롤이 하나 있다. 그런데 그동안 롤 중간중간에서 우표를 하나씩 떼어 낸 탓에, 지금은 우표가 여러 묶음으로 뭉쳐 있고 그 사이가 비어 있는 상태다.
실용적으로 생각해서 우표를 낱장으로 찢지는 않을 것이고, 따라서 묶음과 묶음 사이에서만 롤을 찢을 수 있다. 또 우표 롤이 여러 개로 나뉘면 안 되므로, 이 묶음들은 롤의 맨 앞이나 맨 뒤에서만 떼어 낼 수 있다. 지금 가진 우표 롤로 이것이 가능할까?
입력
첫째 줄에 정수 과 이 주어진다. , 이며, 각각 우표 묶음의 개수와 질의의 개수다.
둘째 줄에 개의 정수 가 공백으로 구분되어 주어진다. 이며, 이는 롤의 처음부터 끝까지 순서대로 각 묶음에 들어 있는 우표의 개수다.
다음 개의 줄에는 각각 정수 가 하나씩 주어진다. 이며, 이는 질의, 즉 택배를 부치는 데 필요한 우표의 개수다.
출력
각 질의마다 그 개수만큼 우표를 가져갈 수 있으면 한 줄에 “Yes”를, 가져갈 수 없으면 “No”를 출력한다.
힌트
롤에는 우표 묶음이 개 있다.
장의 우표는 첫 번째 묶음만 롤에서 떼어 내면 가져갈 수 있다.
장의 우표는 처음 두 묶음을 롤에서 떼어 내면 가져갈 수 있다.
장의 우표는 첫 번째 묶음(장)과 마지막 묶음(장)을 롤에서 떼어 내면 가져갈 수 있다.
장의 우표는 롤 전체를 가져가면 된다.
장만 가져가는 것은 불가능하다. 롤 가운데에 있는 우표 한 장만 가져가려고 찢으면 롤이 하나로 남지 않기 때문이며, 묶음 중간을 찢는 것도 불가능하다.