(本程序请无关者不要回复,比如@bcbgszyzhdtzh0001)
code: (C++14 (GCC 9) O2)
#include<bits/stdc++.h>
using namespace std;
int k[100010],qz[100010];
int main(){
int n,q;
scanf("%d%d",&n,&q);
for(int i=1;i<=n;++i)scanf("%d",&k[i]);
sort(k+1,k+n+1);
for(int i=1;i<=n;++i)qz[i]=qz[i-1]+k[i];
for(int i=1;i<=q;++i){
int p,m;
scanf("%d%d",&p,&m);
int x=upper_bound(k+1,k+n+1,p)-k;
int l=0,r=min(x-1,m);
while(l<r){
int mid=(l+r+1)/2;
int y=lower_bound(k+1,k+n+1,2*p-k[mid])-k;
int gs=n-y+1;
if(gs+mid<=m){
l=mid;
}else{
r=mid-1;
}
}
long long ans=qz[l];
ans+=2ll*p*(m-l)-(qz[n]-qz[n-(m-l)]);
printf("%lld\n",ans);
}
return 0;
}