暴搜,只求部分分,望从 8分 提到 40 分。
#include<bits/stdc++.h>
using namespace std;
int n,m,light[100006],ans,maxx=-1e9,minn=1e9;
void dfs(int x,int cnt,int big,int small){
if(cnt>=m){
ans=min(ans,big-small);
return;
}
if(x>n){
return;
}
dfs(x+2,cnt+1,max(big,light[x]),min(small,light[x]));
dfs(x+1,cnt,big,small);
}
bool flag;
int main(){
ios::sync_with_stdio(0);
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>light[i];
if(light[i]<light[i-1]){
flag=1;
}
}
if(2*m-1==n||flag==0){
for(int i=1;i<=n;i+=2){
maxx=max(light[i],maxx);
minn=min(light[i],minn);
}
cout<<maxx-minn; return 0;
}
dfs(1,0,-1e9,1e9);
cout<<ans;
return 0;
}