import os,sys,random,threading from random import randint,choice,shuffle from copy import deepcopy from io import BytesIO,IOBase from types import GeneratorType from functools import lru_cache,reduce from bisect import bisect_left,bisect_right from collections import Counter,defaultdict,deque from itertools import accumulate,combinations,permutations from heapq import heapify,heappop,heappush from typing import Generic,Iterable,Iterator,TypeVar,Union,List from string import ascii_lowercase,ascii_uppercase,digits from math import ceil,floor,sqrt,pi,factorial,gcd,log,log10,log2,inf from decimal import Decimal,getcontext from sys import stdin, stdout, setrecursionlimit input = lambda: sys.stdin.readline().rstrip("\r\n") MI = lambda :map(int,input().split()) li = lambda :list(MI()) ii = lambda :int(input()) mod = int(1e9 + 7) inf = 1<<60 py = lambda :print("YES") pn = lambda :print("NO") n,m=li() a=li() b=li() idx=list(range(n)) idx.sort(key=lambda x:-a[x]) c0=[] c1=[] for _ in range(m): t,c=li() if t==0: c0.append(c) else: c1.append(c) c0.sort() c1.sort() h=[] for i in c0: while idx and a[idx[-1]]<=i: j=idx.pop() heappush(h,-b[j]) if h: heappop(h) h=[-i for i in h] for i in idx: h.append(b[i]) h.sort(reverse=True) cnt=0 for i in c1: while h and h[-1]<=i: heappop(h) cnt+=1 if cnt>0: cnt-=1 print(len(h)+cnt)