题目描述
给定一个长度为 nn 的数组 aa 。
给定一个长度为 mm 的互不相同的数组 pp , 意味着你可以交换 a[pi]a[pi] 和 a[pi+1]a[pi+1] 任意次。
请确定是否可以用仅允许的交换方式使得 aa 数组非严格递减。
输入描述
第一行输入一个 nn 和 mm 。
第二行输入 nn 个整数 a1,a2,...,ana1,a2,...,an 。
第三行输入 mm 个整数 p1,p2,p3,...,pmp1,p2,p3,...,pm
1≤m<n≤103,1≤ai≤n,1≤pi<n1≤m<n≤103,1≤ai≤n,1≤pi<n
输出描述
如果可以输出 YES
,否则输出 NO
。
输入输出样例
示例 1
输入
3 2
3 2 1
1 2
输出
YES
#include <bits/stdc++.h>
using namespace std;
int a[1010],p[1010],o[1010];
int main(){
int n,m;cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=m;i++){
cin>>p[i];
o[p[i]]=1;//存储可以交换的情况
}
for(int i=1;i<n;i++){//小于n防止数组溢出
if(a[i]>a[i+1]){
if(o[i]==1)
swap(a[i],a[i+1]);
else {
cout<<"NO";
return 0;
}
}
}
cout<<"YES";
return 0;
}