#include<stdio.h>
#include<stdlib.h>

typedef struct _road {
  int a;
  int b;
} road;

int main(void) {
  int n, m;
  int* h;
  road* r; // 道
  _Bool* isBad;
  scanf("%d %d", &n, &m);
  h = (int*)malloc(sizeof(int)*n);
  // 良い天文台: 0, 悪い天文台: 1
  isBad = (_Bool*)malloc(sizeof(_Bool)*n);
  r = (road*)malloc(sizeof(road)*m);
  int i, tmp1, tmp2;
  for(i=0; i<n; i++) {
    scanf("%d", &h[i]);
  }
  for(i=0; i<m; i++) {
    scanf("%d %d", &tmp1, &tmp2);
    r[i].a = tmp1; r[i].b = tmp2;
  }
  for(i=0; i<m; i++) {
    // r[i].aとr[i].b個目の天文台がつながっている．
    // h[r[i].a-1]とh[r[i].b-1]を比較し，小さい方は悪確定
    if(h[r[i].a-1] > h[r[i].b-1]) {
      isBad[r[i].b-1] = 1;
      //printf("%d: bad\n", r[i].b);
    }
    else if(h[r[i].a-1] < h[r[i].b-1]) {
      isBad[r[i].a-1] = 1;
      //printf("%d: bad\n", r[i].a);
    }
    else {
      isBad[r[i].a-1] = 1;
      isBad[r[i].b-1] = 1;
    }
    //printf("%d %d\n", r[i].a, r[i].b);
    //printf("%d %d\n", h[r[i].a-1], h[r[i].b-1]);
    //printf("\n");
  }
  int count=0;
  for(i=0; i<n; i++) {
    if(isBad[i] == 0) {
      count++;
    }
  }
  printf("%d\n", count);
  return 0;
}