中位数

(考时脑壳抽了

思路其实很简单
容易知道最终序列长度为
如果不操作,最小的中位数,即为位置为

我们把删去的数全都往中位数右边的数加即可,中位数不变 的序列中位数最小值 就是位置

如果,原序列和即为所求

记得排序(

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;

int t;const int maxn=2e5+10;
int n,k;
int m[maxn];
int main(){
    cin>>t;
    while(t--){
        cin>>n>>k;long long ans=0;
        for(int i=1;i<=n;++i) cin>>m[i],ans+=m[i];
        sort(m+1,m+1+n);
        if(k==n-1) cout<<ans<<endl;
        else cout<<m[(n-k+1)/2]<<endl;
    }return 0;
}

(蒟蒻只能写这道题题解