[Binary Search]Boj 1920:数値検索

1252 ワード

[Binary Search]Boj 1920:数値検索


Link: https://www.acmicpc.net/problem/1920

質問する


N個の整数A[1]、A[2]、...、およびA[N]が与えられた場合、Xという整数が存在するか否かを判定するプログラムを作成してください.

入力


第1行は自然数N(1≦N≦100000)を与える.次の行には、N個の整数A[1],A[2],...,A[N]が与えられる.次の行はM(1≦M≦100000)を与える.次の行はM個の数を与え、これらの数がAに存在するかどうかを見つければよい.すべての整数の範囲は、231未満の-231以上です.

しゅつりょく


M行に答えを出力します.存在する場合は1を出力し、存在しない場合は0を出力します.

I/O例



コード#コード#

import sys
si = sys.stdin.readline

N = int(si())
list_A = list(map(int,si().split()))
M = int(si())
list_B = list(map(int,si().split()))
list_A.sort()

def BS(list_,L,R,X):
    while L <= R:
        mid = (L+R)//2
        if list_[mid] == X:
            return 1
        if list_[mid] > X: R = mid-1
        else: L = mid+1
    return 0

for x in list_B:
    print(BS(list_A,0,N-1,x))

Screenshot & Output