B. Assigning to Classes
题目链接: Assigning to Classes
题目大意: 输入第一行给出一个数字n,第二行给出2n个数字,将这2n个数字分成2个班,使得两个班的中位数之差最小,求这个最小的差值
思路: 中位数定义是有序数列中间的数字,可以想到排序后找到中间两个数,这两个数的差值就是我们要的结果
代码:
#include<bits/stdc++.h>
#define repn(n) for(int i=1;i<=n;i++)
#define rep(n) for(int i=0;i<n;i++)
#define pb push_back
#define ll long long
const int maxn=2*1e5+5;
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
int s[maxn],n;
memset(s,0,sizeof(s));
cin>>n;
n=2*n;
rep(n)
{
cin>>s[i];
}
sort(s,s+n);
cout<<s[n/2]-s[n/2-1]<<endl;
}
}