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

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

필터

시간 제한1초메모리 제한256 MB

요약
각 파일의 블룸 필터 비트를 조회 식별자와 대조하여 기록이 있을 수 있는 파일을 나열합니다.
난이도

쉬움10점 중 2점

유형
시뮬레이션, 구현
정답자
아직 제출이 없습니다

문제

데이터베이스 엔진 ICPC(Instant Compression and Processing Codec)는 사용자 활동 기록을 저장한다. 기록마다 정수 사용자 식별자가 하나씩 붙는다. 기록은 압축된 데이터 파일에 들어 있고, 한 파일에 여러 사용자의 기록이 섞여 있을 수 있다. 파일을 압축 해제하는 데 CPU 시간이 많이 들기 때문에, 엔진은 파일을 읽기 전에 그 파일에 특정 사용자의 기록이 있을 가능성이 있는지를 적은 비용으로 판별해야 한다.

엔진은 이 판별을 블룸 필터로 한다. 데이터베이스마다 다음 정수 매개변수를 고정한다.

  • mm: 필터의 비트 수
  • ff: 해시 함수의 개수
  • aia_i (0≤i<f0 \le i < f): ii번 해시 함수의 곱수

데이터 파일마다 mm비트 벡터인 필터 값이 하나씩 있다. 필터 값의 jj번 비트(0≤j<m0 \le j < m)가 1인 것은, 그 파일에 어떤 사용자 식별자 uku_k의 기록이 있고 어떤 해시 함수 ii(0≤i<f0 \le i < f)에 대해

j=(uk×ai) mod mj = (u_k \times a_i) \bmod m

이 성립하는 것과 같다.

파일에 사용자 식별자 uku_k의 기록이 있을 가능성이 있다는 것은, 모든 ii(0≤i<f0 \le i < f)에 대해 그 파일 필터 값의 (uk×ai) mod m(u_k \times a_i) \bmod m번 비트가 1이라는 것과 같다.

필터 매개변수, 각 데이터 파일의 필터 값, 질의 사용자 식별자 집합이 주어진다. 질의 집합의 식별자 가운데 적어도 하나의 기록이 있을 가능성이 있는 데이터 파일을 모두 구하라.

입력

첫째 줄에 필터 매개변수 mm, ff와 aia_i (0≤i<f0 \le i < f)가 주어진다 (1≤m≤10001 \le m \le 1000, 1≤f≤1001 \le f \le 100, 1≤ai<2311 \le a_i < 2^{31}).

둘째 줄에 데이터 파일의 개수 nn이 주어진다 (1≤n≤10001 \le n \le 1000). 이어지는 nn개 줄에는 각 데이터 파일의 필터 값이 16진수로 주어진다. 필터 값은 0123456789abcdef 중의 문자 정확히 ⌈m/4⌉\lceil m/4 \rceil개로 이루어진 문자열이다. 첫 번째 문자는 필터 값의 0번부터 3번 비트를 담고, 16진수 한 자리의 최하위 비트부터 최상위 비트 순서로 놓인다. 두 번째 문자는 4번부터 7번 비트, 세 번째 문자는 8번부터 11번 비트를 담고, 그다음도 같은 방식이다. m mod 4≠0m \bmod 4 \ne 0이면 마지막 문자는 남은 m mod 4m \bmod 4개 비트를 최하위 비트부터 담고, 나머지 비트는 0이다.

다음 줄에 질의에 포함된 사용자 식별자의 개수 qq (1≤q≤10001 \le q \le 1000)와 서로 다른 식별자 qq개 uku_k (1≤uk<2311 \le u_k < 2^{31})가 주어진다.

출력

한 줄에 질의 집합의 식별자 가운데 적어도 하나의 기록이 있을 가능성이 있는 데이터 파일의 개수 ss를 출력하고, 이어서 그 파일의 0부터 시작하는 번호 dtd_t (0≤dt<n0 \le d_t < n)를 증가하는 순서로 출력한다. 줄 안의 모든 수는 공백 하나로 구분한다. s=0s = 0이면 00만 출력한다.

예제3

  1. 예제 1

    입력
    23 4 3 5 7 11
    3
    effde7
    c07902
    0800c1
    3 2 4 6
    
    예상 출력
    2 0 2
    
  2. 예제 2

    입력
    1 2 1 7
    3
    0
    1
    1
    2 5 9
    
    예상 출력
    2 1 2
    
  3. 예제 3

    입력
    12 3 2 3 5
    4
    000
    000
    000
    000
    3 1 4 11
    
    예상 출력
    0