import java.util.;
import java.io.;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
HashSet<Integer> set = new HashSet<>();
for (int i = 0 ; i < N;i++)
{
set.add(Integer.parseInt(st.nextToken()));
}
int M = Integer.parseInt(br.readLine());
StringTokenizer st2 = new StringTokenizer(br.readLine());
StringBuilder sb = new StringBuilder();
for (int i = 0 ; i < M;i++)
{
int num = Integer.parseInt(st2.nextToken());
sb.append(set.contains(num) ? 1: 0).append(" ");
}
System.out.println(sb.toString().trim());
}
} 맨 처음에는 간단하게 이중 for문을 이용해서 같으면 1 아니면 0을 적용해서 풀려했는데 시간 초과가 나왔다. M과N의 범위가 각각 500000이여서 당연히 시간초과가 나오는게 맞았다. 그래서 지피티한테 물어보니 Hashset를 알려주었다. 처음보는 생김새였다. Hashset함수는 중복으로 데이터값을 저장받지 않고 순서가 없는 대신에 계산이 정말 빠르다는 특징이 있다. 그래서 이번 문제를 풀때 꼭 필요하다. 그리고 HashSet에다가 add메서드를 이용해서 값을 넣은 후 나중에 입력 받은 값이랑 .contains()를 이용해서 포함되어 있는 지 확인 후 삼항 연산자인 ? 1:0을 써서 값이 포함되면 1 아니면 0을 넣고 뒤에 .append(" ")를 넣어 공백을 추가하였다. 또한 마지막에 StringBuilder인 sb를 .toString()을 이용해 String으로 바꿔서 String의 메서드인 .trim()을 이용하였다. Hashset을 배우면 어려운 문제같지 않다. 이번에는 Hashset함수 관련해서 배운게 좋은 것 같다.