G개의 게이트에 P개의 비행기를 순서대로 도킹시키려고 합니다. 각 비행기는 번호를 가지고 있고 비행기의 번호보다 작거나 같은 번호를 가진 게이트에만 도킹할 수 있습니다. 만약 비행기가 도킹할 수 없는 상황이 발생하면 즉시 모든 작업을 중단한다고 할 때, 최대 몇 대의 비행기가 도킹할 수 있는지 구하는 문제입니다.
import sys
def union(A, B):
a = find(A)
b = find(B)
if a < b:
parent[b] = a
else:
parent[a] = b
def find(A):
if parent[A] == A:
return A
parent[A] = find(parent[A])
return find(parent[A])
G = int(sys.stdin.readline())
P = int(sys.stdin.readline())
parent = [i for i in range(G+1)]
count = 0
for i in range(P):
num = int(sys.stdin.readline())
if find(num) == 0:
break
count += 1
union(num, find(num)-1)
print(count)