Edit

【pythonでABC170を解説】C - Forbidden List

問題概要

問題ページ

C - Forbidden List
C - Forbidden List

問題ページへ移動する

問題文

整数 \(X\) と、長さ \(N\) の整数列 \(p_1, \ldots, p_N\) が与えられます。

整数列 \(p_1, \ldots, p_N\) に含まれない整数 (正とは限らない) のうち \(X\) に最も近いもの、つまり \(X\) との差の絶対値が最小のものを求めてください。そのような整数が複数存在する場合は、そのうち最も小さいものを答えてください。

制約

  • \(1 \leq X \leq 100\)
  • \(0 \leq N \leq 100\)
  • \(1 \leq p_i \leq 100\)
  • \(p_1, \ldots, p_N\) はすべて異なる。
  • 入力中のすべての値は整数である。

問題の考察

ACコード

import sys


def solve():
    input = sys.stdin.readline
    mod = 10 ** 9 + 7
    x, n = list(map(int, input().rstrip('\n').split()))
    p = list(map(int, input().rstrip('\n').split()))
    ls = [True] * 102
    for v in p:
        ls[v] = False
    for i in range(102):
        if 0 <= x - i < 102:
            if ls[x-i]:
                print(x-i)
                exit()
        if 0 <= x + i < 102:
            if ls[x+i]:
                print(x+i)
                exit()


if __name__ == '__main__':
    solve()

-Edit
-