弱弱的问一句,直接这样子暴力难道不行吗,会有什么样的问题呢,以下是我的代码,求教求教
#include <iostream>
#include <algorithm>
using namespace std;
int n;
int k;
struct node{
int num,sign;
}a[300005];
bool b[300005];
int cnt=0;
long long ans;
int cmp(const void* p1,const void* p2){
return (((node*)p1)->num-((node*)p2)->num);
}
int main(){
cin>>n>>k;
for(int i=0;i<n;i++) cin>>a[i].num,a[i].sign=i;
qsort(a,n,sizeof(a[0]),cmp);
for(int i=n-1;cnt<k && i>=0;i--){
if(a[i].num<=0) break;
if(b[a[i].sign-1]==1 || b[a[i].sign+1]==1) continue;
ans+=a[i].num;
cnt++;
b[a[i].sign]=1;
}
cout<<ans;
return 0;
}