显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
long long n,m,a[255],h[255],l[255];
long long ss[255][255],s=100000000;
void dfs(long long x,long long p){
if(x==n){
s=min(s,p-1);
return;
}
if(ss[x][p]){
return;
}
ss[x][p]=1;
for(int i=1;i<=l[p];i++){
if(x+i<=n&&a[x+i]<=h[p]){
dfs(x+i,p);
}
}
for(int i=p+1;i<=m;i++){
if(h[i]>=a[x]){
dfs(x,i);
}
}
return;
}
int main(){
freopen("snowboots_silver_18feb.in","r",stdin);
freopen("snowboots_silver_18feb.out","w",stdout);
scanf("%lld%lld",&n,&m);
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
}
for(int i=1;i<=m;i++){
scanf("%lld%lld",&h[i],&l[i]);
}
dfs(1,0);
printf("%lld",s);
return 0;
}