atcder ABC310 B - Strictly Superiorの復習

atcoder.jp

・参考:
ABC310 B問題(Strictly Superior)を解く - プロひろ

・備考:本番でWAが消せなかったので復習。基本的には問題文の条件の通りにやればよい。

n,m=map(int, input().split())
p=[]
c=[]
f=[]
for _ in range(n):
  l=list(map(int, input().split()))
  p.append(l[0])
  l=l[1:]
  c.append(l[0])
  l=l[1:]
  f.append(l)
#print(p,c,f)

for i in range(n):
  for j in range(n):
    flag=1
    if i==j or p[i]<p[j]:  #条件のPi>=Pjより
      continue
    for k in range(c[i]):
      if f[i][k] not in f[j]:  #条件のj番目の製品はi番目の製品の機能を全て持つことから、1つでも持ってないとflagを0にする。
        flag=0
    if flag:
      if p[i]>p[j] or c[i]<c[j]:   #条件のPi>Pjか、j番目の製品はi番目の製品にない機能をもつことより。
        print("Yes")
        exit()
print("No")