#include<bits/stdc++.h>
using namespace std;
int main(){
int n,m,a[10000]={0},b[10000]={0},c[10000]={0};
int k=0;
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=m;i++){
cin>>b[i];
}
while(1){
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
if(a[j]==a[b[i]]){
c[j]+=k;
}else{
c[j]+=max(0,k-abs(j-i));
}
}
}
long long ans=0;
for(int i=1;i<=n;i++){
if(a[i]<=c[i]){
ans++;
}
}
if(ans==n){
break;
}else{
k++;
}
}
cout<<k+1;
return 0;
}
这是程序,虽然时间复杂度较高,但至少可以暴力出来,为什么错了?回帖必关