# Xに賭けた人たちの中で賭けた目の個数が最も少ない個数を見つける
for i in range(N):
if X in A[i]: # i番目の参加者がXに賭けているかチェック
min_bet=min(min_bet,len(A[i])) # i番目の参加者の賭けた目の個数と現在の最小値を比較し、小さい方をmin_betに格納
条件を満たす参加者の番号をansリストに追加します。
# Xに賭けており、かつ賭けた目の個数が最も少ない参加者の番号をansに格納
for i in range(N):
if (X in A[i]) and (len(A[i])==min_bet): # Xに賭けており、賭けた目の個数がmin_betと等しい場合
ans.append(i+1) # 人の番号は1から始まるため、i+1をansに追加
条件を満たす人の数と、その番号を出力します。
# 出力(条件を満たす人の数と、その番号)
print(len(ans))
print(*ans)
解答
# 入力
N=int(input())
# 各参加者が賭けた目の個数を格納するリスト
C=[0 for i in range(N)]
# 各参加者が賭けた目を格納するリスト
A=[[] for i in range(N)]
# 各参加者について、賭けた目の個数と賭けた目を入力から受け取る
for i in range(N):
C[i]=int(input()) # i番目の参加者の賭けた目の個数
A[i]=list(map(int,input().split())) # i番目の参加者が賭けた目
# 入力(ルーレットの出目)
X=int(input())
# 出力するための答えを格納するリスト
ans=[]
# 最小の賭けた目の個数を格納する変数
min_bet=100
# Xに賭けた人たちの中で賭けた目の個数が最も少ない個数を見つける
for i in range(N):
if X in A[i]: # i番目の参加者がXに賭けているかチェック
min_bet=min(min_bet,len(A[i])) # i番目の参加者の賭けた目の個数と現在の最小値を比較し、小さい方をmin_betに格納
# Xに賭けており、かつ賭けた目の個数が最も少ない参加者の番号をansに格納
for i in range(N):
if (X in A[i]) and (len(A[i])==min_bet): # Xに賭けており、賭けた目の個数がmin_betと等しい場合
ans.append(i+1) # 人の番号は1から始まるため、i+1をansに追加
# 出力(条件を満たす人の数と、その番号)
print(len(ans))
print(*ans)