# -*- coding: utf-8 -*-

# 標準入力の取得

N, M = list(map(int, input().split()))

H = list(map(int, input().split()))

A, B = [], []

for m in range(M):

    A_m, B_m = list(map(int, input().split()))

    A.append(A_m)

    B.append(B_m)



# 求解処理

observatory = [True for n in range(N)]

for A_m, B_m in zip(A, B):

    lower_observatory = int()

    if H[A_m-1] < H[B_m-1]:

        observatory[A_m-1] = False

    elif H[A_m-1] > H[B_m-1]:

        observatory[B_m-1] = False

    else:

        observatory[A_m-1] = False

        observatory[B_m-1] = False



result = sum(observatory)



# 結果出力

print(result)

# -*- coding: utf-8 -*-

# 標準入力の取得

N, M = list(map(int, input().split()))

H = list(map(int, input().split()))

A, B = [], []

for m in range(M):

    A_m, B_m = list(map(int, input().split()))

    A.append(A_m)

    B.append(B_m)





def main() -> None:

    """Entry point

    """

    # 求解処理

    # 道ごとに「良い展望台」ではない展望台を削除し、残りの展望台の数を計算する。

    observatory = [True for n in range(N)]  # 初期状態はすべて「良い展望台」

    for A_m, B_m in zip(A, B):

        A_m -= 1  # インデックス番号に変換

        B_m -= 1  # インデックス番号に変換

        if H[A_m] < H[B_m]:

            observatory[A_m] = False

        elif H[A_m] > H[B_m]:

            observatory[B_m] = False

        else:

            observatory[A_m] = False

            observatory[B_m] = False



    result = sum(observatory)



    # 結果出力

    print(result)





if __name__ == "__main__":

    main()

# -*- coding: utf-8 -*-
# 標準入力の取得
N, M = list(map(int, input().split()))
H = list(map(int, input().split()))
A, B = [], []
for m in range(M):
    A_m, B_m = list(map(int, input().split()))
    A.append(A_m)
    B.append(B_m)
# 求解処理
observatory = [True for n in range(N)]
for A_m, B_m in zip(A, B):
    lower_observatory = int()
    if H[A_m - 1] < H[B_m - 1]:
        observatory[A_m - 1] = False
    elif H[A_m - 1] > H[B_m - 1]:
        observatory[B_m - 1] = False
    else:
        observatory[A_m - 1] = False
        observatory[B_m - 1] = False
result = sum(observatory)
# 結果出力
print(result)

# -*- coding: utf-8 -*-
# 標準入力の取得
N, M = list(map(int, input().split()))
H = list(map(int, input().split()))
A, B = [], []
for m in range(M):
    A_m, B_m = list(map(int, input().split()))
    A.append(A_m)
    B.append(B_m)


def main() -> None:
    """Entry point"""
    # 求解処理
    # 道ごとに「良い展望台」ではない展望台を削除し、残りの展望台の数を計算する。
    observatory = [True for n in range(N)]  # 初期状態はすべて「良い展望台」
    for A_m, B_m in zip(A, B):
        A_m -= 1  # インデックス番号に変換
        B_m -= 1  # インデックス番号に変換
        if H[A_m] < H[B_m]:
            observatory[A_m] = False
        elif H[A_m] > H[B_m]:
            observatory[B_m] = False
        else:
            observatory[A_m] = False
            observatory[B_m] = False
    result = sum(observatory)
    # 結果出力
    print(result)


if __name__ == "__main__":
    main()

-# 求解処理 -observatory = [True for n in range(N)] -for A_m, B_m in zip(A, B): -    lower_observatory = int() -    if H[A_m - 1] < H[B_m - 1]: -        observatory[A_m - 1] = False -    elif H[A_m - 1] > H[B_m - 1]: -        observatory[B_m - 1] = False -    else: -        observatory[A_m - 1] = False -        observatory[B_m - 1] = False -result = sum(observatory) -# 結果出力 -print(result) + + +def main() -> None: +    """Entry point""" +    # 求解処理 +    # 道ごとに「良い展望台」ではない展望台を削除し、残りの展望台の数を計算する。 +    observatory = [True for n in range(N)]  # 初期状態はすべて「良い展望台」 +    for A_m, B_m in zip(A, B): +        A_m -= 1  # インデックス番号に変換 +        B_m -= 1  # インデックス番号に変換 +        if H[A_m] < H[B_m]: +            observatory[A_m] = False +        elif H[A_m] > H[B_m]: +            observatory[B_m] = False +        else: +            observatory[A_m] = False +            observatory[B_m] = False +    result = sum(observatory) +    # 結果出力 +    print(result) + + +if __name__ == "__main__": +    main()