注意给a[ 0 ]赋一个最小值
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+5;
int t,n,m,a[N],cnt[N];
int main(){
scanf("%d",&t);
while(t--){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
}
memset(cnt,0,sizeof cnt);
while(m--){
int x,y;
scanf("%d%d",&x,&y);
cnt[x]++,cnt[y]--;
}
int f=1;
a[0]=-0x3f3f3f3f;
for(int i=1;i<=n;i++){
a[i]+=cnt[i];
if(a[i]<a[i-1]){
puts("No");
f=0;
break;
}
}
if(f) puts("Yes");
}
return 0;
}