双指针正确题解
2026-03-07 13:58:35
发布于:北京
4阅读
0回复
0点赞
双指针
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+10;
int a[N],n,k,pre[N];
signed main(){
cin>>n>>k;
for(int i=1;i<=n;i++){
cin>>a[i];
}
int x=1,y=1,ans=-98184;
sort(a+1,a+n+1,greater<int>());
for(int i=1;i<=n;i++){
pre[i]=pre[i-1]+a[i];
}
while(x<=n&&y<=n){
if(a[x]-a[y]<=k){
y++;
}else{
ans=max(pre[y-1]-pre[x-1],ans);
x++;
}
}
cout<<abs(ans)<<endl;
return 0;
}
这里空空如也




有帮助,赞一个