問題概要
問題ページ
-
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()