5.2
A https://ac.nowcoder.com/acm/contest/5403/A
#include<bits/stdc++.h> using namespace std; int n,m,a[100010],sum[100010]; int main(){ cin>>n>>m; for(int i = 1;i<=n;i++) scanf("%d",&a[i]); sort(a+1,a+1+n); sum[1]=a[1]; for(int i = 2;i<=n;i++) sum[i]+=sum[i-1]+a[i]; while(m--){ int x,y; scanf("%d %d",&x,&y); if(x>y) swap(x,y); int l = upper_bound(a+1,a+n+1,x)-a-1; int r = lower_bound(a+1,a+n+1,y)-a; int mid = upper_bound(a+1,a+1+n,(x+y)>>1)-a-1; int ans=0; ans+=l*x-sum[l]; ans+=sum[n]-sum[r-1]-(n-r+1)*y; ans+=sum[mid]-sum[l]-(mid-l)*x; ans+=(r-mid-1)*y-(sum[r-1]-sum[mid]); cout<<ans<<endl; } return 0; }
原文:https://www.cnblogs.com/aixiaodezsh/p/12865511.html